關於C中結構體裡使用指標的問題,求大神

2021-05-04 18:26:52 字數 1974 閱讀 4434

1樓:匿名使用者

typedef struct flightflight;

這樣就行了, scanf或printf都行, 將資料存放在棧上.或者將資料放在堆上,你也可以手動fly[flynum].num = (char*) malloc(20);scanf("%s",fly[flynum].num);printf("%s", fly[flynum].

num);就可以

2樓:veket的小號

指標不是用來存放字串的

是用來存放字串的位址的

所以 想存放字串 請 定義陣列!

3樓:

你的 num 沒有初始化,我猜預設初始化為 null 了,這裡當然是不能寫入的。

即使可以寫入,最好也是寫成字元陣列的形式,因為指標只指向乙個位址,後面的記憶體能否使用是未知的

4樓:匿名使用者

scanf("%s", &(fly[flynum].num)); /*要加「&」*/

printf("%s", fly[flynum].num); /*不要加「&」,不要加「*」*/

5樓:淺吟低唱

結構體裡int *num;沒有指向故scanf("%s",fly[flynum].num);會出錯,而為輸入其位址,就不會出錯,er你輸入的位址很可能不是有效的位址,故 printf把fly[flynum].

num列印出來會出錯

把 int *num;改為int num;

scanf("%s",fly[flynum].num);改為scanf("%s",&fly[flynum].num);

就對了;

c語言結構體指標問題,求大神賜教啊!

6樓:匿名使用者

對l的操作不能完全說是對head的操作,對於操作它們的元素時才能說是等同的,而你可以讓l指向另外乙個鍊錶。

l 一般會向「後」(l=l->next;其實是無前後這種說法的,都是在存諸中)移動,那麼有時需要返回它的第1個元素的地位址時,你只需返回head就可以了,而不必去計算你向後移動了多少單位(其實你確實可以去計算,然後返回)。

7樓:郝在益

首先,你這裡的題目給的不是很準確。

linklist到底指的是結構體了,還是結構體指標了??

如果是結構體的話,那麼下面的這句就完全的錯了。所以我猜想應該是結構體指標。

head=l=(linklist)malloc(sizeof(lnode));

的確是將head與l所指向的空間變為一樣了。但是,head我們一般是作為頭指標的,它一般都是指向某個鍊錶的第乙個結構體元素。而l卻是可以一直變換的。

這樣,無論這個鍊錶有多少個元素,我們都知道有乙個head指向它的第乙個元素,這樣也就能輕鬆訪問到鍊錶的每乙個元素了

8樓:風若遠去何人留

沒錯 從你這個寫法上可以看出 linklist應該是lnode*型別這個應該是鍊錶操作的開始部分

head一般指向頭結點,不變

而l一般指向新結點,會變化

最初始時只有乙個結點,所以用head=l的方式後續應該會對l進行操作,改變l的指向,但head的指向不會變當l本身值改變時(不是l指向的內容改變,而是l本身),l和head指向會不同,這時就不是對head的操作了

9樓:青衣風雨

兄台,完整**貼出來吧,這個樣子很難看得懂你問的是什麼。

至於head=l=malloc之後

凡是 l-> 這個樣子的操作,就是對 head-> 的操作。

但是 l = xx 這個樣子的操作,就和head完全沒有關係,因為這個時候,l已經不等於head了

另外一種是如果是在子函式中的操作,有可能你傳遞引數的方式有誤,導致對head的修改無法傳遞到函式外。

關於指標和結構體的,結構體指標和結構體中的指標的區別

dulnode 是個雙鏈表節點的結構體。大括號內是對它的定義。prior 是指向當前節點的前乙個節點的指標。next 是指向當前節點的後乙個節點的指標。定義了乙個結構型別 struct dulnode 其中dulnode就表示這個型別 等價 dulinklist表求指向這個型別的指標型別 dulno...

C語言中連結串列中的結構體指標變數問題求教

定義結構體指標變數時,只分配儲存指標型別需要的空間,比如listnode p 這裡p有給他分配儲存指標的4個位元組的空間。實際上你是要讓p指向一個結構體空間的,這個結構體空間在哪?可以先定義listnode a 然後 p a 這時p指向一個之前申請分配過空間 編譯器設定過其地址和大小,在棧空間存放著...

c語言結構體成員指標初始化問題,C語言結構體成員指標初始化問題

一中只是將name指向 jim 所在的空間,jim 已經存在了,直接將指標指向他即可,而二中是複製乙個 jim 到name所指向的空間,沒有初始化當然不行 第乙個 jim 返回的是乙個位址,是正確的。第二個記憶體分配小了。問題 一 中的student.name並未初始化,為什麼能賦值成功?stu.n...