【发布时间】:2020-02-04 02:14:10
【问题描述】:
我知道对于一个给定的整数数组,一个指向该整数数组的指针,我可以使用这样的方式访问该整数数组:
int main(){
int x[4] = {0,1,2,3};
int *ptr;
ptr = x;
for(int i = 0; i < 4; i++){
printf("%d", *(ptr+i));
}
return 0;
}
现在说我有一个字符数组,但做同样的事情是行不通的。
int main(){
char x[4] = "Haha";
char *ptr;
ptr = x;
for(int i = 0; i < 4; i++){
printf("%s", *(ptr+i));
}
return 0;
}
显然*(ptr+i) 在第一个代码中每次将指向整数的指针递增 4 个字节。它不适用于第二个代码。如何对字符数组使用相同的符号?我认为这个想法是每次增加一个字符。
【问题讨论】:
-
%s 用于字符数组(以空字符结尾的字符串),%c 用于单个字符。 printf("%c", *(ptr+i));
-
好的,我明白了,谢谢
标签: c pointers pointer-arithmetic