在 C 中为结构数据类型内的数组赋值时出错

Getting error when assigning value to an array inside the struct datatype in C

  struct student {
    char name[20];
    int age;
    float mobile;
    char address[20];
};
struct student Amit;
Amit.name[20] = "Sachin"; // I have mentioned the size still warning and unexpected result! why?

输出:

$ 海湾合作委员会 try.c try.c:在函数中'main': try.c:12:17: 警告:赋值从指针生成整数而不进行强制转换 [-Wint-conversion] s1.name[20] = "萨钦"; ^ $./a.exe ☺

name[20]name 的索引 20 处的 char(顺便说一句,越界),您正试图为其分配一个字符串。相反,您可以使用 strcpy:

复制该值
strcpy(Amit.name, "Sachin");

// I have mentioned the size still warning and unexpected result! why?

您没有指定数组的大小。数组的大小在其声明中指定。您已为下标运算符指定索引以访问数组的元素。

表达式

Amit.name[20]

具有 char 类型,而且存在对数组以外的内存的访问,因为数组的索引的有效范围是 [0, 19].

另一方面,字符串文字 "Sachin" 用作赋值表达式的表达式的类型为 char *.

因此编译器发出一条消息。

数组没有赋值运算符。

要么像这样定义结构体类型的对象时需要初始化数组

struct student Amit = { .name = "Sachin" };

或者在定义对象后,你可以像

一样复制数组中的字符串文字
#include <string.h>

//...

struct student Amit;
strcpy( Amit.name, "Sachin" );