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;
}