【发布时间】:2012-08-08 12:20:30
【问题描述】:
我是 C 新手。以下代码中的字符串分配有效:
#include<stdio.h>
int main(void){
char str[] = "string";
printf("%s\n",str);
}
但在下面不起作用,即使我将索引号给name[]:
#include <stdio.h>
int main(void){
struct student {
char name[10];
int salary;
};
struct student a;
a.name[10] = "Markson";
a.salary = 100;
printf("the name is %s\n",a.name);
return 0;
}
为什么会这样?
【问题讨论】:
-
char name[10] 等于 char* name 但分配不同。
-
当您声明这样的数组
char name[10];时,您将得到一个包含十个元素的数组,编号为 0 到 9(含)。所以a.name[10]超出了数组的范围。尝试为其分配值不是一个好主意。 -
在了解字符串之前,您需要先了解数组。