int main() {
int i;
char a[]={"Hello"};
while(a!='\0') {
printf("%c",*a);
a++;
}
getch();
return 0;
}
将字符串存储在连续的内存位置&将地址传递给printf()时应该打印字符。我已经开始学习C.我无法找到答案。请帮助。
答案 0 :(得分:5)
好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中的操作可以修改数组本身(只有个人
元素可以修改。)
答案 1 :(得分:2)
在您的代码中,a
是数组的名称,您无法像a++
那样对其进行修改。使用这样的指针:
char *p = "Hello";
while(*p++)
{
printf("%c",*p);
}
答案 2 :(得分:1)
三个问题:
char a[]={"Hello"};
是非法的。 {"Hello"}
只能初始化char* a[]
。您可能想要char a[]="Hello";
while(a!='\0')
- 你可能意味着*a != '\0'
。 a
是数组本身。a++;
- 数组无法递增。你应该增加指向它的指针。答案 3 :(得分:0)
您也可以使用for循环尝试:
#include <stdio.h>
int main(void) {
char a[] = "Hello";
char *p;
for(p = a; *p != '\0'; p++) {
printf("%c", *p);
}
return 0;
}