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

双指针char操作

发布时间:2020-12-16 10:31:12 所属栏目:百科 来源:网络整理
导读:假设我有char ** argv. 首先,如何打印出argv中的所有字符串?我尝试了以下方法: char *temp;temp = *argv; // Now points to the first string?while (temp != NULL) { printf("%s ",temp); temp++;} 在这里,当temp递增时,它只跳过一个字符.为什么会这样?
假设我有char ** argv.

首先,如何打印出argv中的所有字符串?我尝试了以下方法:

char *temp;
temp = *argv; // Now points to the first string?
while (temp != NULL) {
    printf("%s ",temp);
    temp++;
}

在这里,当temp递增时,它只跳过一个字符.为什么会这样?我知道argv是一个持有点数的数组.每个指针指向一个char *数组.如果是这样,为什么这不起作用?我知道因为temp是char类型,所以递增该指针会使它增加1个字符(或字节).如果是这样,我如何将指针增加到下一个数组并打印出该字符串?

解决方法

它只跳过一个字符,因为temp是指向char的指针.通过添加一个,您告诉编译器将指针移动到指向内存中的下一个char.

argv是一个指针数组.您需要做的是在每次迭代时转到下一个指针.就像是:

char **temp = argv;  // temp is a pointer to a *pointer*,not a pointer to a *char*
while (*temp != NULL) {
    printf("%s ",*temp);
    temp++;
}

(编辑:李大同)

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

    推荐文章
      热点阅读