c语言指针和数组求教
新手求教感谢!int main()
{
int a[] = { 'A', 'B', 'C', 'D', 'E', 'F','\0' };
printf("%x\n", a);
printf("%s\n", a);
printf("--------------------------------\n" );
char b[] = { 'A', 'B', 'C', 'D', 'E', 'F','\0'};
printf("%x\n", b);
printf("%s\n", b);
system("pause");
return 0;
}
打印结果
effc3c
A
--------------------------------
effc2c
ABCDEF
请按任意键继续. . .
请问1.为什么按照字符串打印时候显示的是此地址内容字符串打印出来,而不是地址对应的ASCII的字符串显示?
2.数组a打印字符串时候为啥打印不全?
因为char和int占的空间不同,1打印A是int占4字节,A只占一部分,后面填充了0 你转到地址内存空间一看就明白了 可以理解为打印%s,是从你放入的地址开始往后找到\0为一个字符串,进行的打印。char数组一个元素占一位,必须找到\0才会完全停下。而int数组中'A'后面已经自动赋值\0所以只打印A, LemonTree9527 发表于 2022-7-29 13:21
可以理解为打印%s,是从你放入的地址开始往后找到\0为一个字符串,进行的打印。char数组一个元素占一位,必 ...
感谢!理解了!:lol
页:
[1]