获取系统时间
int main()
{
time_t now;
struct tm local;
while (1)
{
time(&now);
localtime_s(&local, &now);
cout.fill('0');
cout << local.tm_hour << ":";
cout.fill('0');
cout << local.tm_min << ":";
cout.fill('0');
cout << local.tm_sec << '\r';
Sleep(1000);
}
return 0;
}
指针和二维数组
int main()
{
int a[][3]{ {5, 1, 2}, {3, 4, 0}, {8, 9, 7} };
int sum = 0;
int* p = &(a[0][0]);
int nlen = sizeof(a[0]) / sizeof(int);
cout << *a << ", p = " << p << ", p+1 = "<< *(p+1) << ", nlen = " << nlen << endl;
int i, j, t;
for (i = 0; i < 3; i++)
{
cout << "*(a+i): " << *(a + i) << ", &(a[i][0]/a[i]): " << &a[i] << endl; //*(a+i)是指第i行的地址
cout << "line: " << i << ", p[i]:" << p[i] << endl;
p = a[i];
for (j = 0; j < 3; j++)
{
t = *(p + j);// a[i][j];
//t = *(p++);
sum += t;
cout << "t=" << t << ", &t: " << &t
<< ", &a[i][j]: " << &a[i][j] << endl;
}
cout << endl;
}
cout << sum << endl;
cout << endl;
return 0;
}
/*错误
int main()
{
int a[][3]{ {5, 1, 2}, {3, 4, 0} };
int sum = 0;
int* p = a[0];
cout << *a << " " << p << endl;
int i, j, t;
for (i = 0; i < 2; i++)
{
cout << "line: " << i << ", p[i]:" << p[i] << endl;
for (j = 0; j < 3; j++)
{
//t = *(p + i) + j; a[i][j];
t = *(p++);
sum += t;
cout << "t=" << t << ", &t: " << &t
<< ", &a[i][j]: " << &a[i][j] << endl;
}
cout << endl;
}
cout << sum << endl;
cout << endl;
return 0;
}*/
二维字符串指针数组
int main()
{
const char* ch[] = { "china", "c", "string" };
const char** p = ch;
cout << **p << " " << **(p + 1) << " " << **(p + 2)
<< endl;
cout << *p << " " << *(p + 1) << " " << *(p + 2)
<< endl;
cout << endl;
return 0;
}
/*output
c c s
china c string
*/
字符串数组和指针赋值
int main()
{
char ch1[] = { 'h', 'e', 'l', 'l', 'o' };
char ch2[] = "hello";
char* pch1 = ch1;
//strcpy_s(pch1, ch1);
char* pch2 = ch2;
cout << "sizeof(ch1):" << sizeof(ch1) << ",ch1:" << ch1 << endl;
cout << "sizeof(ch2):" << sizeof(ch2) << ",ch2:" << ch2 << endl;
cout << "sizeof(pch1):" << sizeof(pch1) << ",pch1:" << pch1 << endl;
cout << "sizeof(pch2):" << sizeof(pch2) << ",pch2:" << pch2 << endl;
cout << endl;
return 0;
}
/*output
sizeof(ch1):5,ch1:hello烫烫烫炭g{婶
sizeof(ch2):6,ch2:hello
sizeof(pch1):4,pch1:hello烫烫烫炭g{婶
sizeof(pch2):4,pch2:hello
*/
字符串指针数组
int main()
{
char ch1[] = { 'h', 'e', 'l', 'l', 'o' };
char ch2[] = "hello";
char* pch1 = ch1;
*(pch1 + 5) = '\0';
//strcpy_s(pch1, ch1);
char* pch2 = ch2;
cout << "sizeof(ch1):" << sizeof(ch1) << ",ch1:" << ch1 << endl;
cout << "sizeof(ch2):" << sizeof(ch2) << ",ch2:" << ch2 << endl;
cout << "sizeof(pch1):" << sizeof(pch1) << ",pch1:" << pch1 << endl;
cout << "sizeof(pch2):" << sizeof(pch2) << ",pch2:" << pch2 << endl;
cout << endl;
return 0;
}
/*output
//报错
sizeof(ch1):5,ch1:hello
sizeof(ch2):6,ch2:hello
sizeof(pch1):4,pch1:hello
sizeof(pch2):4,pch2:hello
*/
字符串常量指针
int main()
{
char ch1[] = "hello";
char* pch1 = ch1;
const char* pch2 = "hello"; //phc2和pch3都指向常量存储区的同一个地址
const char* pch3 = "hello";
cout << (pch2 - pch3) << endl;
cout << endl;
return 0;
}
/*output
0
*/
两次循环输出字符串指针数组
int main()
{
const char* point[] = { "one", "two", "string" };
int i = 0;
while (*point[2]!='\0')
{
i++;
cout << *point[2]++ << " ";
cout << i << endl;
}
/*while (*point[2] != '\0') //此时*point[2]为空,不执行
{
i++;
cout << *point[2]++ << " ";
cout << i << endl;
}*/
while (*point[2] == '\0')
{
i++;
cout << *point[2]++ << " ";
cout << i << endl;
}
cout << endl;
return 0;
}
/*
s 1
t 2
r 3
i 4
n 5
g 6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
*/
拷贝char to char*
int main()
{
char arr[] = "there is a string";
char* point;
char arr2[30] = "";
int i = 0, arrLen = 0;
point = arr2;
while (arr[arrLen]!='\0')
{
arrLen++;
}
for (i; i < arrLen; i++)
{
*point = arr[i];
cout << *point;
point++;
cout << "point = " << point << endl; //输出为空,可以通过强制转换为指针类型再输出,定义为字符指针,所以视为字符
/**point++ = arr[i]; //*point++和*(point++)是一样的效果,都是先*point再执行point++,所以point一直为空,而arr2有赋值
cout << *point;*/
}
cout << endl;
cout << arr2 << endl;
cout << endl;
return 0;
}
/*output
there is a string
there is a string
/*
there is a string
*/