关于C语言指针数组问题

来源:百度知道 编辑:UC知道 时间:2024/06/25 22:54:58
指针数组自增为什么报错 ?

比如

char *str[] = {
"abc",
"abcd",
"abcde",
NULL
};

int j = 0;
while( *str ) {
//这里是为了检测str指针数组中有多少个字符串
str++; //出错
j++;
}

难道指针数组不可以自增???
如果这样的话就没有错误
while( *( str + j ) ) {
//这里是为了检测str指针数组中有多少个字符串
j++;
}

因为你是这样定义的 str相当于数组名 这时str这个指针相当于用const修辞了 他自身不能再改变了
如果char *p = str;
这时while(*p){
p++; //这里应该就不会出错了
}

++是+了STR那么些的字节

因为数组名是指针常量,即是不能改变的,要想改变它,让它自增,只能先把它赋值给一个指针变量,让变量去自增或自减。如:
char *str[] = {
"abc",
"abcd",
"abcde",
NULL
};
让char *p = str;

再让p++,就行了。