请问一个结构体的问题

C语言 码拜 9年前 (2015-05-11) 831次浏览 0个评论
 

定义的结构体是这样:

typedef struct{
	int x;
	int y;
	int label;
}DataPoint;
typedef struct{
    int x;
    int y;
}PeakData;
typedef struct{
	int label; 
	int peakCount;
	PeakData* peaks;
	double threshold;
}MaterialData;

比如现在我用函数labelPeaks(DataPoint *point,MaterialData material)以得到material.peaks(*point已知)

for(i=0;i<n;i++){
material.peaks[i].x = point[i].x;
material.peaks[i].y = point[i].y;
}

这段代码在运行第一遍的时候就出错了,不知道是不是需要作空间申请什么的或者哪儿错了?求指正

这两个数组是怎么创建的?代码贴出来看看
20分
需要提前分配好内存

material.peaks = new PeakData[n];
引用 1 楼 hnwyllmm 的回复:

这两个数组是怎么创建的?代码贴出来看看

代码挺长的就不贴了。。
*point 数组没问题,调试的时候有结果了
material只是做了MaterialData *material定义,应该还差什么
运行的时候报错:0xC0000005: 写入位置 0x00000000 时发生访问冲突
应该就是赋值的时候有问题

引用 2 楼 zhangxiangDavaid 的回复:

需要提前分配好内存

material.peaks = new PeakData[n];

我按您说的添加了,可还是出现一样的问题

引用 3 楼 xubinlife 的回复:
Quote: 引用 1 楼 hnwyllmm 的回复:

这两个数组是怎么创建的?代码贴出来看看

代码挺长的就不贴了。。
*point 数组没问题,调试的时候有结果了
material只是做了MaterialData *material定义,应该还差什么
运行的时候报错:0xC0000005: 写入位置 0x00000000 时发生访问冲突
应该就是赋值的时候有问题

material.peaks没有分配内存,无法赋值

双击定位到错误处,看看哪行出错
引用 6 楼 zhangxiangDavaid 的回复:

双击定位到错误处,看看哪行出错

编译没错  就是调试的时候出错:
material.peaks[i].x = point[i].x;      cxx0030 错误 无法计算表达式的值

引用 5 楼 zhangxiangDavaid 的回复:
Quote: 引用 3 楼 xubinlife 的回复:
Quote: 引用 1 楼 hnwyllmm 的回复:

这两个数组是怎么创建的?代码贴出来看看

代码挺长的就不贴了。。
*point 数组没问题,调试的时候有结果了
material只是做了MaterialData *material定义,应该还差什么
运行的时候报错:0xC0000005: 写入位置 0x00000000 时发生访问冲突
应该就是赋值的时候有问题

material.peaks没有分配内存,无法赋值

感谢 ,别的地方还有个小问题,现在已经解决了

传入实参数组point没正确初始化

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明请问一个结构体的问题
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!