一般情况下我们在结构中都使用字符数组来存储字符串,是否可以使用指向char的指针来代替字符数组呢?
//结构体声明的两种写法
#define LEN 20
//第一种写法
struct names {
char first[LEN];
char last[LEN];
}
//第二种写法
struct pnames {
char *first;
char *last;
}
使用中的区别:
struct names veep = {"abc","def"};//字符串全部存储在结构的内部
struct pnames treas = {"hig","klm"};//字符串全部存储在编译器存储常量的地方(特别注意,是利用指针定义的数组,不是之前定义好的)
#define LEN 20
struct pnames {
char *first;
char *last;
}
struct pnames treas = {"hig","klm"};
有关结构体中字符数组的其他的用法:
可以使用malloc分配内存并使用指针储存该地址。(详见C Primer Plus P459)