字符指针为什么是这样的结果

为什么会连在一起输出,刚刚看到指针数组试一下字符,怎么和预期想的不太一样,连在一起输出因为存放指针的时候把他们连在一起了吗

img

img

因为你的字符串数组没有加入字符串终结标志\0
C输出字符串时以\0作为字符串的结束标志,由于你的字符数组中没有包含结束符,所以%s会一直输出下去,直到碰到内存随机值中的0
有帮助望采纳~

使用char *指针进行操作时,需要在指针最后一个字符位置上赋值字符串结束符\0,否则会乱码
例如

char arr[]={'a','b','\0'};
char arr1[]={'a','c','\0'};
char arr2[]={'f','g','\0'};
char arr3[]={'1','4','\0'};

printf在输出字符串的时候会一直输出,直到遇到 '\0' 才会停止。
至于为什么连在一起,是因为碰巧这些变量的地址是连续的,所以输出了

这个是有点儿巧合,你这三个字符串的地址刚好是连在一起的,而且都没有结束符,所以就导致你程序每次找字符结束标志都找到arr1后面去了,这个你可以去了解一下存储结构就会有一个比较清晰的认识了