fanguangwei 发表于 2022-7-29 09:43

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打印字符串时候为啥打印不全?

无闻无问 发表于 2022-7-29 12:36

因为char和int占的空间不同,1打印A是int占4字节,A只占一部分,后面填充了0

无闻无问 发表于 2022-7-29 12:37

你转到地址内存空间一看就明白了

机智聪明的小迪 发表于 2022-7-29 12:48

机智聪明的小迪 发表于 2022-7-29 12:49

LemonTree9527 发表于 2022-7-29 13:21

可以理解为打印%s,是从你放入的地址开始往后找到\0为一个字符串,进行的打印。char数组一个元素占一位,必须找到\0才会完全停下。而int数组中'A'后面已经自动赋值\0所以只打印A,

fanguangwei 发表于 2022-7-29 13:57

LemonTree9527 发表于 2022-7-29 13:21
可以理解为打印%s,是从你放入的地址开始往后找到\0为一个字符串,进行的打印。char数组一个元素占一位,必 ...

感谢!理解了!:lol
页: [1]
查看完整版本: c语言指针和数组求教