网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
01月02日漏签0天
c语言吧 关注:801,692贴子:4,374,419
  • 看贴

  • 图片

  • 吧主推荐

  • 视频

  • 游戏

  • 10回复贴,共1页
<<返回c语言吧
>0< 加载中...

大佬们,在结构体中如何创建一个由长度为变量的数组?

  • 只看楼主
  • 收藏

  • 回复
  • ID未超神
  • 便当
    3
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
我想创建一个
int main(){
struct test{
int t[num_test];
};
return 0;}
但是这个num_test并不是一个常数,不能被#define,这个num_test是由别的函数输出的结果。
由于我下面还要接着使用这个 test结构体。我要在main函数外创建声明。
void test_function (struct test k);
void test_function (struct test k){
k.t[0] = 1;}
这时候 test_function会报错说 struc test 这个结构体不完整。
就是这么个类型的问题,我想要把某个函数输出的int值用来创建结构体,但是创建的话只能是在主函数或者在某个函数内创建,没办法办到全局创建,这这种问题该咋解决呀?


  • ID未超神
  • 便当
    3
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
刚刚去百度搜了搜,这种变量为长度是不允许的是吧,得用malloc函数?


2026-01-02 17:17:49
广告
不感兴趣
开通SVIP免广告
  • phoenix2017
  • 彩虹面包
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
私聊


  • 一周休七日
  • 帕秋莉糕
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
指针拿来干嘛的?


  • 一周休七日
  • 帕秋莉糕
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
你也可以c99的用柔性数组,不知道微软的编译器支不支持,gcc可以
struct test{
int t[];//不需要给长度。
};
struct test *xx = (struct test *)malloc(sizeof(struct test) + sizeof(int) * num_test);
for(int i = 0; i < num_test: i++)
xx->t[i] = 0;


  • 贴吧用户_aJGJS8N
  • 低能力者
    5
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
数组大小是固定的,你可以创建链表


  • 贴吧用户_7A44VXC
  • 异能力者
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
结构体里用指针,函数返回的int值用malloc来创建数组,再用结构体里的指针指向这个数组
struct t {
int *p;
}
int main(void)
{
int a = 5;
struct t b;
b.p = (int *)malloc(sizeof(int) * a);
free(b.p);
return 0;
}


  • 窝车则的悬崖上
  • 毛蛋
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
指针 然后new一个你要的长度的数组


2026-01-02 17:11:49
广告
不感兴趣
开通SVIP免广告
  • 豪杰兴邦
  • 麻婆豆腐
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
new一个


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 10回复贴,共1页
<<返回c语言吧
分享到:
©2026 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示