gpt4 book ai didi

c - 递增 C 指针

转载 作者:太空狗 更新时间:2023-10-29 17:14:41 25 4
gpt4 key购买 nike

我认为如果一个指向 char 数组的 c 指针被递增,那么它将指向该数组中的下一个元素。但是当我尝试这个时,我发现我必须增加它两次。尝试使用 sizeof(char) 进行增量,我发现添加 char 的大小太多,因此必须将其除以二。

#include <stdio.h>

int main(int argc, char * argv[]){
char *pi;
int i;
pi = argv[1];
printf("%d args.\n",argc-1);
printf("input: ");
for(i=0;i<argc-1;i++){
printf("%c, ",*pi);
/*The line below increments pi by 1 char worth of bytes */
//pi+=sizeof(pi)/2;
/* An alternative to the above line is putting pi++ twice - why? */
pi++;
pi++;
}
printf("\n");
return 0;
}

我做错了什么吗?还是我误解了递增指针的方法?

最佳答案

sizeof(char) 保证为 1,但 sizeof(char*) 不是。

尽管如此,您的函数只是偶然起作用

例如,尝试使用以下参数调用它:

abc defg

这将产生:

2 args.
input: a, c,

这是完全错误的。问题是您正在递增指向 argv 的元素 1 的指针,而不是指向 argv 的指针。

试试这个:

#include <stdio.h>

int main(int argc, char * argv[]){
char **pi;
int i;

pi = argv + 1;
printf("%d args.\n",argc-1);
printf("input: ");
for(i=0;i<argc-1;i++){
printf("%c, ",**pi);
pi++;
}
printf("\n");
return 0;
}

这将打印每个参数的第一个字符:

2 args.
input: a, d,

关于c - 递增 C 指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/312648/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com