读书人

为什么这两句话的输出不一样

发布时间: 2012-03-07 09:13:51 作者: rapoo

求救,为什么这两句话的输出不一样
int length(PList plist){
int i = plist->size;
return i;
}



void main(){
PList dl = newList();
printf("%d",dl->size); //这里输出0,预期得到的结果
printf("%d",length(dl));//这里输出-858993460,比较奇怪

}

其中newList()返回一个struct的指针



感觉上那两句话是等效的


[解决办法]
newList(); 返回的一个临时变量的地址,出现无法预期的结果很正常。
[解决办法]
newNode()
newList()
返回的都是局部变量的地址,函数执行完局部变量就被释放,
你再去读取,就会有问题了.

读书人网 >C语言

热点推荐