关于指针数组的1点疑惑
关于指针数组的一点疑惑
下面一段代码:
编译运行后出现如下情况:
妹妹你别走(null)
段错误 (核心已转储)
如何才能让他正常不会出现段错误?
隐隐约约的感觉是不是这个字符串数组 {"妹","妹","你","别","走"}; 是常量造成的。感觉自己说不清楚。
各位大侠发表下高见啊。
------解决思路----------------------
pch[5]是空啊,数组初始化时,如果元素少于个数时,后面会被初始化为0
你pch[6]有六个元素, {"妹","妹","你","别","走"} 只有五个,所以最后一个初始为0,所以就显示(Null)了
就比如你写int a[5] = {1,2,3}; 那么a中的值为 1 2 3 0 0
------解决思路----------------------
访问空指针就会段错误啊
------解决思路----------------------
printf的%s不支持nullptr空指针吧
下面一段代码:
#include<stdio.h>
void main()
{
int i;
char *pch[6] = {"妹","妹","你","别","走"};
for (i = 0;i < 6;i ++)
{
printf("%s",pch[i]);
}
printf("\n");
for (i = 5;i >=0;i--)
{
printf("%s\n",pch[i]);
}
}
编译运行后出现如下情况:
妹妹你别走(null)
段错误 (核心已转储)
如何才能让他正常不会出现段错误?
隐隐约约的感觉是不是这个字符串数组 {"妹","妹","你","别","走"}; 是常量造成的。感觉自己说不清楚。
各位大侠发表下高见啊。
------解决思路----------------------
pch[5]是空啊,数组初始化时,如果元素少于个数时,后面会被初始化为0
你pch[6]有六个元素, {"妹","妹","你","别","走"} 只有五个,所以最后一个初始为0,所以就显示(Null)了
就比如你写int a[5] = {1,2,3}; 那么a中的值为 1 2 3 0 0
------解决思路----------------------
访问空指针就会段错误啊
------解决思路----------------------
printf的%s不支持nullptr空指针吧