#include<stdio.h>#define maxsize 30typedef struct{? ? int num[maxsize];? ? int length;} sqlist,*sql;int main(){? ? printf("請輸入順序表的長度:");? ? int n;? ? sqlist L;? ? sql p,q;printf("你輸入的順序表為:\n);? ? scanf("%d",&n);? ? p=&L;? ? q=scan(p,n);? ? print(q);}?sql scan(sql L,int n){? ? int i;? ? for(i=0; i<n; i++)? ? {? ? ? ? L->length++;? ? ? ? scanf("%d",&L->num[i]);? ? ??? ? }return L;}我想把這個(gè)結(jié)構(gòu)體指針返回,可是報(bào)錯(cuò)不知道為什么,函數(shù)寫得不對么,是要申請內(nèi)存么(0-0)
3 回答

onemoo
TA貢獻(xiàn)883條經(jīng)驗(yàn) 獲得超454個(gè)贊
這個(gè)代碼在指針的使用上應(yīng)該沒有錯(cuò)。
問題可能出在 L 的成員?length 沒有初值!? 塊作用域內(nèi)的結(jié)構(gòu)體變量和其他變量一樣,沒有顯示初始化的話,其成員的初值是不確定的。
所以 scan 函數(shù)對指針的操作沒有錯(cuò),但是其直接對 length 自增恐怕無法正確表示數(shù)組中有效成員的個(gè)數(shù)。

末日泣歌
TA貢獻(xiàn)35條經(jīng)驗(yàn) 獲得超18個(gè)贊
抱歉哈 周六晚上6點(diǎn)以后到周一早9點(diǎn)之間 都不開電腦 沒看到
而且 C的簡單的還可以 都還給學(xué)校了? 我是學(xué)java的 所以幫不到你 抱歉哈

慕移動(dòng)6052691
TA貢獻(xiàn)22條經(jīng)驗(yàn) 獲得超7個(gè)贊
1、print(q); 函數(shù)沒有實(shí)現(xiàn)
2、scan要事先聲明;或者把scan函數(shù)放在main函數(shù)前
3、printf("你輸入的順序表為:\n); 括號內(nèi)少了一個(gè)引號
- 3 回答
- 1 關(guān)注
- 1580 瀏覽
添加回答
舉報(bào)
0/150
提交
取消