user-0 提问: 结构体里的动态数组输入问题

回复:
user: user-1
content: 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10581430.html 希望对你有帮助：https://blog.csdn.net/it_xiangqiang/category_10768339.html

user: user-0
content: 引用 8 楼 真相重于对错的回复:initlist里面的 num是main里面的副本，在那个函数里的任何操作对于main 里面的num无效 嗯嗯，我把这个给忘记了。谢谢谢谢谢谢~

user: user-0
content: 引用 7 楼 qzjhjxj的回复:[quote=引用 4 楼 weixin_53443263 的回复:][quote=引用 3 楼 qzjhjxj的回复:]修改如下，供参考：#include <stdio.h> #include <stdlib.h> #define max_size 100 typedef struct {     int length;     int *arr; }sqlist;  int initlist_sq(sqlist &num) //int initlist_sq(sqlist num) {     num.arr=(int*)malloc(sizeof(int)*(max_size));     if(!num.arr)        exit(EXIT_FAILURE);     num.length=0;     return 0; }  int main() {     sqlist num;     int i,n,flag;     flag=initlist_sq(num);     if(flag) printf("allocation failed\n");     else     printf("successful\n");      scanf("%d",&num.length);     for(i=0;i<num.length;i++)         scanf("%d",&num.arr[i]);          return 0;  } 你就只是加了个&吧。加了之后连编译都不通过了，而且我们定义的num也不是指向结构体的指针变量吧。[/quote] 我这里是运行通过的，没出现你说的编译问题： 这个初始化int initlist_sq(sqlist num)函数里的num和main()函数里的num是两个不同内存空间，不通过地址让他们产生联系，光值没用啊。[/quote] 我刚刚查了一下，发现你这个参数列表中加的取地址运算符是C++语法的，我这个是C语言的，所以没法直接，我刚刚换成指针就成功了。真心感谢你！

user: user-2
content: initlist里面的 num是main里面的副本，在那个函数里的任何操作对于main 里面的num无效

user: user-3
content: 引用 4 楼 weixin_53443263 的回复:[quote=引用 3 楼 qzjhjxj的回复:]修改如下，供参考：#include <stdio.h> #include <stdlib.h> #define max_size 100 typedef struct {     int length;     int *arr; }sqlist;  int initlist_sq(sqlist &num) //int initlist_sq(sqlist num) {     num.arr=(int*)malloc(sizeof(int)*(max_size));     if(!num.arr)        exit(EXIT_FAILURE);     num.length=0;     return 0; }  int main() {     sqlist num;     int i,n,flag;     flag=initlist_sq(num);     if(flag) printf("allocation failed\n");     else     printf("successful\n");      scanf("%d",&num.length);     for(i=0;i<num.length;i++)         scanf("%d",&num.arr[i]);          return 0;  } 你就只是加了个&吧。加了之后连编译都不通过了，而且我们定义的num也不是指向结构体的指针变量吧。[/quote] 我这里是运行通过的，没出现你说的编译问题： 这个初始化int initlist_sq(sqlist num)函数里的num和main()函数里的num是两个不同内存空间，不通过地址让他们产生联系，光值没用啊。

user: user-0
content: 引用 1 楼 真相重于对错的回复:你的这个内存泄露了 我去网上查了一下内存泄露是指我没用free，不过现在这个不是输入不了的原因吧

user: user-0
content: 引用 2 楼 user-4的回复:没问题，就等着你输入 ，多按几次回车 不行的，到那里就直接跳出了

user: user-0
content: 引用 3 楼 qzjhjxj的回复:修改如下，供参考：#include <stdio.h> #include <stdlib.h> #define max_size 100 typedef struct {     int length;     int *arr; }sqlist;  int initlist_sq(sqlist &num) //int initlist_sq(sqlist num) {     num.arr=(int*)malloc(sizeof(int)*(max_size));     if(!num.arr)        exit(EXIT_FAILURE);     num.length=0;     return 0; }  int main() {     sqlist num;     int i,n,flag;     flag=initlist_sq(num);     if(flag) printf("allocation failed\n");     else     printf("successful\n");      scanf("%d",&num.length);     for(i=0;i<num.length;i++)         scanf("%d",&num.arr[i]);          return 0;  } 你就只是加了个&吧。加了之后连编译都不通过了，而且我们定义的num也不是指向结构体的指针变量吧。

user: user-3
content: 修改如下，供参考：#include <stdio.h> #include <stdlib.h> #define max_size 100 typedef struct {     int length;     int *arr; }sqlist;  int initlist_sq(sqlist &num) //int initlist_sq(sqlist num) {     num.arr=(int*)malloc(sizeof(int)*(max_size));     if(!num.arr)        exit(EXIT_FAILURE);     num.length=0;     return 0; }  int main() {     sqlist num;     int i,n,flag;     flag=initlist_sq(num);     if(flag) printf("allocation failed\n");     else     printf("successful\n");      scanf("%d",&num.length);     for(i=0;i<num.length;i++)         scanf("%d",&num.arr[i]);          return 0;  }

user: user-4
content: 没问题，就等着你输入 ，多按几次回车

user: user-2
content: 你的这个内存泄露了