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

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:[email protected]
QQ群:637538335
关注微信