關於C語言結構體賦值與傳值的問題。具體請看問題補充

2022-10-08 08:56:36 字數 776 閱讀 1224

1樓:匿名使用者

首先,p是被定義成一個指向struct test基型別的指標變數,它用於存放指向該型別元素的地址,你定義的b是一個陣列,它用於存放struct test型別的變數,當你理解了變數的地址和變數的型別是不同的情形後你就該理解為什麼此處你的賦值是不正確的。另外看到樓上的朋友說讓寫成

struct test *p = a;

struct test b[3] ;

b=p;

這種寫法也有問題,因為b是陣列名,是常量,因此這樣賦值是錯誤的。

第二個問題: void test(struct test x) 中的struct test x也可以寫成struct test *x,所以此處的struct test x不是陣列,只是一個形式上的陣列而已,它在編譯階段會被編譯器處理成struct test *x(同樣如果是int a,也會被處理成int *a的),所以此處的x和你開始定義的p的型別是一致的,都是struct test *型別。

2樓:上帝來自地球

可以傳,但是

b[3] = p;是錯誤的;

正確的應該這麼寫

struct test *p = a;

struct test b[3] ;

b=p;

詳細資訊請看結構體定義,不明白還可再問我

3樓:

用函式傳值其實也是傳的指標,不是給陣列賦值,相當於

void test(struct test *x) 在函式的引數裡陣列都會退化為指標,因此不報錯

c語言單連結串列結構體指標賦值想等說明什麼

不是相等,這是賦值的意思 相等是比較的意思,比較兩個數相等用 雙等號p h 賦值,就是把h的地址值賦值給 p 為以後的操作準備。h 中放的首地址,p 中放當前前一個節點,此時只有一個首地址,p中也放首地址。後面,新生成後一個結構體節點,就會把新的放到p中。其實p中放的一直是當前最後一個節點的地址,這...

C語言與C 結構體的區別,C語言和C 語言的區別是什麼?

c語言的結構就是值型別,跟int,char沒有什麼區別 c 的結構跟類已經非常接近了,就是如果不具體說明,預設為共有 比如說這個結構體吧.struct mystruct str 在c 裡可以這樣用 mystruct s1 mystruct 就是一個型別,在c裡只能這樣用其 struct mystru...

c語言裡複數結構體的定義,關於C語言的題目 用結構體定義一個複數,並實現複數的加法 減法和乘法。

1 首先我們開啟dev。2 我們給這個結構體取個名字叫student。3 然後我們新增變數。4 給結構體型別指標p申請堆空間。5 使用for迴圈給結構體賦值。6 在通過for迴圈列印輸出,這樣就完成就結構體的基本建立,結尾不要忘了使用free p 釋放我們申請的堆空間。結構體型別變數的定義與其它型別...