关于char的指针数组
发布时间:2020-12-16 09:59:02 所属栏目:百科 来源:网络整理
导读:我理解为什么这不起作用: int main(int argc,char *argv[]) { char *names[] = {"name1","name2","name3","name4"}; int i = 0; while (i++ = 3) { printf("%sn",*names++); }} 错误: a.c: In function 'main':a.c:16: error: wrong type argument to inc
我理解为什么这不起作用:
int main(int argc,char *argv[]) { char *names[] = {"name1","name2","name3","name4"}; int i = 0; while (i++ <= 3) { printf("%sn",*names++); } } 错误: a.c: In function 'main': a.c:16: error: wrong type argument to increment shell returned 1 这是因为我试图增加一个数组变量(而不是一个指针).请不要介意错误消息中的行号,我在上面和下面列出了很多注释代码. 但是,我不明白为什么这段代码有效: void myfunc(char *names[]) { int i = 0; while (i++ <= 3) { printf("%sn",*names++); } } int main(int argc,"name4"}; myfunc(names); } 我们如何在myfunc()中增加名称?它仍然是myfunc()中的本地数组变量. 谢谢. 解决方法
在第一个示例中,名称是一个数组.数组不能递增.
在第二个示例中,名称是指针.指针可以递增. 第二个例子编译为什么的背景: 函数声明中的变量定义中的[]与(另一个)*相同. 所以这 void myfunc(char * names[]); 相当于 void myfunc(char ** names); 后者很明显,这里的名称不是数组而是指针. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |