c語言結構體指針
發布時間: 2022-01-18 14:24:30
『壹』 c語言指針和結構體
樓主你好:
for(i=cnt;i>0;i--)
{/*P為臨時結構體指針*/
p=(struct linklist *)malloc(sizeof(linklist));
scanf("%s%s%d",p->sno,p->sname,&p->sgrade);
p->next=ps->next;
ps->next=p;
}
你仔細看一下你的這段代碼。
第一次循環的時候,p指向ps指向的地址,然後ps指向p,這樣的結果是:ps--->p---->p->next
然後下一次循環,ps->next現在是p,你執行了「p->next=ps->next」那麼p指向了p自己。。。而ps指向了p。在以後的循環中無法改變這一現象,從而造成了死循環,不知道你是不是能夠明白,推薦你畫一下圖,畫畫就明白了。
還有最後的那個for循環,終止條件改為p=p->next,這個應該是粗心了吧?
看起來你是初學c,c中聯表示比較難以理解的一部分,祝你好運,學業有成。
『貳』 c語言結構體指針
error C2106: '=' : left operand must be l-value
這句的意思是等號左邊必須是一個左值,也就是說等號左邊要放一個能被修改的值
這樣看來 pcg->name不能被修改 估計name是個數組,數組名是個常量,是不能被改變的
這樣操作: strcpy(pcg->name,temp.qq);
熱點內容