C语言 使用指针表示法打印字符数组



我知道对于给定的整数数组,指向该整数数组的指针,我可以使用如下方式访问整数数组:

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 字节。 它不适用于第二个代码。如何对字符数组使用相同的表示法?我认为这个想法是每次增加一个字符。

你在循环后打印每个字母,所以你应该更正你的源代码:printf("%s", *(ptr+i));printf("%c", *(ptr+i));我认为您应该将char x[4] = "Haha";更改为char x[5] = "Haha";因为,也许在这种情况下它不会引起任何错误,但有时,您会溢出,要小心!