69,382
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct ab
{
int *a1;
int cnt1;
};
ab AB;
ab plus(int *a,int cnt)
{
int *b = (int*)malloc(sizeof(int)*3);
for(int i=0;i<3;i++)
{
b[i] = a[i];
}
cnt++;
AB.a1 = b;
AB.cnt1 = cnt;
return AB;
}
void main()
{
int cnt=0;
int *a;
a = (int*)malloc(sizeof(int)*3);
memset(a,0,sizeof(int)*3);
a[0] = 1;
a[1] = 2;
a[2] = 3;
AB = plus(a,cnt);
AB.a1=a;
free(a);
// AB.a1 =a ,也就是你把a的地址赋值给a1了,然后释放了a地址,所以AB.a1地址就没有啦。
//第二问嘛,类似第一问,对相同的地址进行操作呢
for(int i=0;i<3;i++)
{
printf("%d",AB.a1[i]);
}
printf("%d",AB.cnt1);
// printf("")
}
AB.a1=a; //这不是 初始化 ???
free(a); //