结构体成员——数组或指针

结构体成员是C类型的字符数组表示字符串时

c语言中没有字符串类型,只能使用字符数组表示字符串。

当定义结构体时,成员是字符数组时,在外部给该成员赋值,不能使用 

结构体把变量名.成员名 = "ssss";

上述表达式是错误的,定义成员是数组,直接使用成员名表示的是该数组的首地址,赋值时只能给他地址,不能给他常量

直接打印输出结构体成员数组名,输出的是地址。

可以使用字符串函数 strcpy 给字符数组(相当于字符串)复制一个字符串。

struct {
    char *name,address[20];
    int age;
}student4;//使用这种直接定义结构体变量,不能继续定义其他的结构体变量


// student1.name[20] = "www"; 结构体成员为数组时,使用结构体变量.成员名 访问的是数组名(数组的首地址),它是一个地址,
// 不能将常量赋值给他,对结构体数组赋值可使用strcpy函数


//将strcpy(stringa, stringb) 将stringb的首地址赋值给stringa的首地址

strcpy(student1.address,"zhe shi addr");

student1.age = 10;

// 给字符数组赋值只能赋值单个字符
student1.address[20] = 'a';

printf("%d\n",student1.age);
printf("%p\n",&student4);
printf("%s\n",student1.address);
printf("%c\n",student1.address[20]);

结构体成员是指针

直接打印输出结构体成员指针,输出的是指针指向地址的内容。

 

你可能感兴趣的:(C/C++,c/c++,结构体)