加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

关于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);

后者很明显,这里的名称不是数组而是指针.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读