int main() {
int i;
char a[]={"Hello"};
while(a!='\0') {
printf("%c",*a);
a++;
}
getch();
return 0;
}
字符串存储在连续的内存位置中,并且在将地址传递给 printf() 时,它应该打印字符。我已经开始学习 C。我无法找到答案。请帮忙。
int main() {
int i;
char a[]={"Hello"};
while(a!='\0') {
printf("%c",*a);
a++;
}
getch();
return 0;
}
字符串存储在连续的内存位置中,并且在将地址传递给 printf() 时,它应该打印字符。我已经开始学习 C。我无法找到答案。请帮忙。
那么a
是你不能增加的数组的名称。更改数组的地址是非法的。
所以定义一个指针a
然后递增
#include <stdio.h>
#include <conio.h>
int main()
{
int i;
char a[]="Hello";
char *ptr = a;
while(*ptr!='\0')
{
printf("%c",*ptr);
// a++ here would be illegal
ptr++;
}
getch();
return 0;
}
NOTE:
事实上,C 中的数组是不可修改的lvalues
。C 中没有可以修改数组本身的操作(只能修改单个元素)。
在您的代码中,a
是一个数组的名称,您不能像a++
. 使用这样的指针:
char *p = "Hello";
while(*p++)
{
printf("%c",*p);
}
三个问题:
char a[]={"Hello"};
是非法的。{"Hello"}
只能初始化char* a[]
。你可能想要char a[]="Hello";
while(a!='\0')
- 你可能是说*a != '\0'
。a
是数组本身。a++;
- 数组不能递增。你应该增加一个指向它的指针。您也可以使用 for 循环尝试:
#include <stdio.h>
int main(void) {
char a[] = "Hello";
char *p;
for(p = a; *p != '\0'; p++) {
printf("%c", *p);
}
return 0;
}