C语言 调用函数时指针赋值问题

来源:百度知道 编辑:UC知道 时间:2024/05/22 03:21:05
main()
{int n;
Node *t[5];
for(n=0;n<5;n++)
t[n]=NULL;
diaoyong(t[5]);
}
为什么在被调用的函数diaoyong()里t[5]不等于NULL;求高人解答.

如果要使被调函数diaoyong()里的t[5]等于NULL,应该怎么修改主函数,不用在被调函数内部修改.
谢谢楼下的那位好心人,可能是我没有说清楚,我上面被调函数里的t[5]不等于NULL,意思是在被调的函数里指针t[0],t[1],t[2],t[3],t[4]不等于NULL,这才我所要问的.

原因如下:
简单的讲,你的数组访问越界了,t[5]指向的是一个野地址

详细的说就是:
你的数组定义为t[5];,也就是其包含如下5个成员:
t[0],t[1],t[2],t[3],t[4]
注意数组下标从0开始。

而下面的代码,也就是对于t[0],t[1],t[2],t[3],t[4]
进行了初始化:
for(n=0;n<5;n++)
t[n]=NULL;

所以t[5]为野地址

因为数组t的元素是t[0]~t[4],不包含t[5]这个元素,而且在
for(n=0;n<5;n++)
t[n]=NULL;

这个循环中,也没有为t[5]赋值(而且这样做也是危险的)

修改如下:

Node *t[5];
改为
Node *t[6];

for(n=0;n<5;n++)
改为
for(n=0;n<6;n++)

——热电效应和热电偶
闭合回路中所产生的热电势由接触电势和温差电势两部分组成
重要结论:
1.如果组成热电偶的两种电极材料相同,则无论热电偶冷、热两端的温度如何,闭合回路中的总热电势为零;
2.如果热电偶冷、热两端的温度相同,则无论两电极材料如何,闭合回路中的总热电势也为零
3.热电偶产生的热电势除了冷、热两端的温度有关之外,还与电极材料有关,也就是说由不同电极材料制成的热电偶在相同的温度下产生的热电势是不同的。
——热电阻的测温原理
热电阻是基于电阻的热效应进行温度测量的,即电阻体的阻值随温度的变化而变化的特性。因此,只要测出感温热电阻的阻值变化,就可以测量出被测温度。
目前,主要有金属热电阻和半导体热敏电阻两类。
金属热电阻和半导体热敏电阻的比较
热敏电阻的温度系数更大,常温下的电阻值更高(通常在数千欧以上),但互换性较差,非线性严重,测温范围只有-50~300℃左右,大量用于家电和汽车用温度检测和