C语言_结构体嵌套和字符串数组的表示_plusC14.3

本文通过一个具体的C语言程序示例介绍了结构体的基本用法,包括如何定义结构体、初始化结构体变量以及如何访问结构体成员。此外,还展示了字符串数组的使用及通过预定义数组实现简单消息系统的技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include<stdio.h>
#define LEN 20
const char *mgs[5]=
{
"qqqq","wwww","EEEEEEE","RRRR","TTTTT"
};
struct apple
{
char smell[LEN];
char taste[LEN];
};
struct fruit
{
struct apple greenapple;
char view[LEN];
float value;
};
main()
{
struct fruit ap={{"香","甜"},"好看",12.5};
printf("%s\n",ap.greenapple.smell);
    printf("%s\n",ap.greenapple.taste);
    printf("%s\n",ap.view);
    printf("%.2f\n",ap.value);
    printf("%s\n",mgs[0]);
    printf("%s\n",mgs[3]);
    printf("%s\n",mgs[4]);
}
在C语言结构体中,是可以使用动态字符串数组的。一种实现方法是使用指针动态内存分配函数(如malloc、calloc等)来创建一个指向字符串的指针数组,然后在需要的时候动态地分配内存来存储字符串。下面是一个示例代码: ``` #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_NAME_LEN 50 typedef struct { char **names; int num_names; } Person; void add_name(Person *p, char *name) { p->num_names++; p->names = realloc(p->names, sizeof(char *) * p->num_names); p->names[p->num_names - 1] = malloc(sizeof(char) * (strlen(name) + 1)); strcpy(p->names[p->num_names - 1], name); } int main() { Person p; p.names = NULL; p.num_names = 0; add_name(&p, "John"); add_name(&p, "Mary"); add_name(&p, "Tom"); for (int i = 0; i < p.num_names; i++) { printf("Name %d: %s\n", i + 1, p.names[i]); } for (int i = 0; i < p.num_names; i++) { free(p.names[i]); } free(p.names); return 0; } ``` 在上面的代码中,我们定义了一个名为Person的结构体,其中包含一个char类型的指针指向字符串数组,以及一个int类型的变量表示数组字符串的数量。我们定义了一个add_name函数,用于向字符串数组中添加新的字符串。这个函数首先将num_names加1,然后使用realloc函数重新分配names指针数组的内存空间,以便能够存储更多的指向字符串的指针。接下来,它使用malloc函数为新字符串分配内存,并使用strcpy函数将字符串复制到新分配的内存中。在主函数中,我们使用add_name函数向Person结构体中添加了三个字符串,然后使用for循环打印出每个字符串。最后,我们使用for循环free函数释放了动态分配的内存。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值