社区
C语言
帖子详情
关于c指针数组返回值,谢谢赐教
kawayi_kai
2009-06-12 01:53:36
1.当返回一个结构的指针数组时,以xx**形式的返回值返回,并以xx**的变量接受,为什么在使用时会出错?第一次打印xx[0]->x可以正确打印而第二次xx[1]->x,就不能显示其值了
2.我用一个结构指针指向5*sizeof(结构)的内存,通过指针的地址偏移找到其值,但是在free(指针)的时候总是报错,为什么?
...全文
42
3
打赏
收藏
关于c指针数组返回值,谢谢赐教
1.当返回一个结构的指针数组时,以xx**形式的返回值返回,并以xx**的变量接受,为什么在使用时会出错?第一次打印xx[0]->x可以正确打印而第二次xx[1]->x,就不能显示其值了 2.我用一个结构指针指向5*sizeof(结构)的内存,通过指针的地址偏移找到其值,但是在free(指针)的时候总是报错,为什么?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
kawayi_kai
2009-06-12
打赏
举报
回复
谢谢您
wanyuzhen
2009-06-12
打赏
举报
回复
第一问,data *datas[5]是栈区的,在函数返回时销毁
/*读数据*/
data ** readdatas();
data** searchdatas(data**);
void sortdatas(data**);
void writedatas(data**);
int main(int argc, char *argv[])
{
int i;
data **datas;
datas = readdatas();
for(i=0;i <5;i++)
{
printf("%d,%d,%d\n",datas[i]->x,datas[i]->y,datas[i]->z);
}
for(i=0;i <5;i++)
{
free(datas[i]);
}
free(datas);
return 0;
}
data ** readdatas()
{
int i;
data **datas = (data**)malloc(sizeof(data*) *5);
for(i=0;i <5;i++)
{
datas[i]=(data*)malloc(sizeof(data));
datas[i]->x=abs(rand())%900+100;
datas[i]->y=abs(rand())%900+100;
datas[i]->z=abs(rand())%900+100;
}
return datas;
}
kawayi_kai
2009-06-12
打赏
举报
回复
附加上代码:
第一问:
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#define COUNT 5;
typedef struct
{
int x,y,z;
}data;
/*读数据*/
data** readdatas();
data** searchdatas(data**);
void sortdatas(data**);
void writedatas(data**);
int main(int argc, char *argv[])
{
int i;
data **datas;
datas=readdatas();
for(i=0;i<5;i++)
{
printf("%d,%d,%d\n",datas[i]->x,datas[i]->y,datas[i]->z);
}
for(i=0;i<5;i++)
{
free(datas[i]);
}
return 0;
}
data** readdatas()
{
int i;
data *datas[5];
for(i=0;i<5;i++)
{
datas[i]=(data*)malloc(sizeof(data));
datas[i]->x=abs(rand())%900+100;
datas[i]->y=abs(rand())%900+100;
datas[i]->z=abs(rand())%900+100;
}
return datas;
}
第二问:
#include <stdio.h>
#include <malloc.h>
#define MAX 10
typedef struct
{
int id;
char *name;
int score;
} stu;
stu* readDatas();
stu* searchLowest(stu*);
void outdata(stu* data);
int main(int argc, char *argv[])
{
int num;
stu *datas;
datas=readDatas();
for(num=0;num<MAX;num++)
{
printf("%s\n",(datas+num)->name);
}
//outdata(searchLowest(datas));
for(num=0;num<MAX;num++)
{
free((datas+num)->name);
(datas+num)->name=NULL;
}
free(datas);
return 0;
}
stu* readDatas()
{
stu *datas;
FILE *file;
int index;
datas=(stu*)malloc(MAX*sizeof(datas));
if((file=fopen("d:\\in.txt","rt"))!=NULL)
{
for(index=0;index<MAX;index++)
{
(datas+index)->name=(char*)malloc(4*sizeof(char));
fscanf(file,"%d %s %d\n",&(datas+index)->id,(datas+index)->name,&(datas+index)->score);
}
}
fclose(file);
return datas;
}
stu* searchLowest(stu* datas)
{
int min=datas->score;
int index=0;
int num;
for(num=1;num<MAX;num++)
{
int score=(datas+num)->score;
if(score<min)
{
min=score;
index=num;
}
}
return (datas+index);
}
void outdata(stu* data)
{
FILE *file;
if((file=fopen("d:\\out.txt","wt"))!=NULL)
{
fprintf(file,"%d %s %d\n",data->id,data->name,data->score);
}
fclose(file);
}
C语言指针选择题
大学牲的C语言作业选择题
C语言qsort函数使用详解
qsort函数参数 void qsort(voidBase,size_t_numberofelement,size_t_Sizeofelement,int(_cdecl_ptfuncCompare)(constvoid,constvoid)); 第一个参数voidBase,这实际上是一个不定类型的指针,通常称为数组名,但是实际上并不局限于数组名,可以延伸出更多用途。 第二个参数size_t_numberofelement,数组中元素的个数。 第三个参数size_t_Sizeofelement,元素的大小。
指针的深度理解
指针是地址,地址是数据,数据可以用空间来储存;指针变量则是一种变量,一种用来保存指针地址的变量。若是要区分这两种概念,首先要明确变量的两个属性:变量有两个属性,一个是左值(空间,存放内容的空间),另一个则是右值(数据,占具体内存的数据)。那么对于指针,既然是地址,那么则可理解为右值。但对于指针变量,它是变量,则存在两个属性,左值和右值。在解释之前,举个例子:如果学校领导要去学生公寓中找学生,若果没有宿舍的门牌号,那么领导只能按着楼层去一层一层的寻找目标宿舍,其过程十分繁琐。
力扣第一题:两数之和——C语言
/nums为数组,numsSize为数值的个数(或许也可以是数组的下标),target为设定的两个数的和,returnSize定义的指针存放
返回值
下标的。还是看不懂,就把代码整体Ctrl+C 、Ctrl+V了,结果是错了,,,请你在该数组中找出 和为目标值 target 的那两个整数,写完了准备提交才发现力扣的答案开头看不懂,,,打开翻译软件翻译。返回的数组必须是malloced,这个我还没学,就很抓马,,,最后在我的不懈更改下,也算是成功了,总体测试都可以了。
【Linux】基础IO之操作与文件描述符fd全解析:从C语言到系统调用底层实现
本文剖析Linux文件操作与系统调用原理,从C语言文件打开模式(如w清空、a追加)及重定向机制切入,详解open()的标志位(O_CREAT/O_EXCL等)、权限设置与原子性操作。核心揭示文件描述符(fd)本质:内核文件
指针数组
下标,通过struct file管理文件属性及缓冲区。结合“一切皆文件”设计,阐明设备通过函数指针表抽象为文件接口,并验证C语言FILE对fd的封装,最终呈现用户态到内核态的文件操作链路。
C语言
70,023
社区成员
243,263
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章