1 #include <stdio.h>
2
3 int main()
4 {
5 int a = 0;
6 char b[] = "hello world";
7 char c[] = "";
8 char *p = 0;
9 char *q = b;
10 char **m = &q;
11 printf("b 的地址是 %ld \n",&b);
12 printf("b[0] 的地址是 %ld \n",&b[0]);
13 printf("int 的字长是 %ld \n",sizeof(int));
14 printf("char 的字长是 %ld \n",sizeof(char));
15 printf("a 的字长是 %ld \n",sizeof(a));
16 printf("b[] 的字长是 %ld \n",sizeof(b));
17 printf("c[] 的字长是 %ld \n",sizeof(c));
18 printf("&a 的字长是 %ld \n",sizeof(&a));
19 printf("p 的字长是 %ld \n",sizeof(p));
20 printf("*p 的字长是 %ld \n",sizeof(*p));
21 printf("*q 的字长是 %ld \n",sizeof(*q));
22 printf("q 的字长是 %ld \n",sizeof(q));
23 printf("q 字符串 %s \n",q);
24 printf("b 字符串 %s \n",b);
25 printf("b 字符串 %s \n",&b);
26 printf("m 字符串 %s \n",*m);
27
28 return 0;
29 }
运行结果:
b 的地址是 140734730615760
b[0] 的地址是 140734730615760
int 的字长是 4
char 的字长是 1
a 的字长是 4
b[] 的字长是 12
c[] 的字长是 1
&a 的字长是 8
p 的字长是 8
*p 的字长是 1
*q 的字长是 1
q 的字长是 8
q 字符串 hello world
b 字符串 hello world
b 字符串 hello world
m 字符串 hello world
个人见解:printf 打印始终要指向被打印的那块内存地址首地址。
sizeof 关键字求指针的时候 要分别对待。