1、
#include <stdio.h> int main() { char *str1 = "abcd\n"; char str2[10] = "abcd\n"
;char str3[][10] = {"abcd\n",""}; char *str4[] = {"abcd\n",""}; printf(
"%d\n%d\n%d\n%d\n", sizeof(str1),sizeof(str2),sizeof(str3),sizeof(str4)); }
输出
8
10
20
16
str1是一个指针,64位系统里指针大小为8个字节,32位为4个字节
str2为一个数组,sizeof计算数组大小,跟字符串无关
str3为一个二维数组,同样是计算数组大小
str4为一个指针数组,也就是里面都是指针,2个指针也就是16个字节
2、
7条线可以把平面分成几个部分
29个部分,(n * n + n + 2) / 2
3、
#include <stdio.h> #include <stdlib.h> #include <string.h> union my { int
intVal;char charVal[4]; }; int main() { my test; test.intVal = 0x12345678;
test.charVal[1] = 0x22; printf("%x", test.intVal); return 0; }
输出
12342278,不是12225678
12345678在内存中是从高位到低位
a[0]: 78
a[1]: 56
a[2]: 34
a[3]: 12
因此charVal[1]该的是56,所以就有上面的结果
例如
以十进制为例, 10^0肯定是最低位——个位 10^1高一点点——十位 10^2更高一点——百位
我们书写从高位到低位,百十个,内存是反向的,个十百
4、
#include <stdio.h> int main() { char c[100] = "abc\0def"; printf("%c", c[4]); }
输出d
\0是一个字符,也就是结束标记
printf(“%s”, c);
会输出abc
热门工具 换一换