如何把結構體陣列作為實參傳遞給函式

2021-08-21 02:01:48 字數 912 閱讀 2088

1樓:墨汁諾

陣列傳給指標,實質上是不可能的,本質上傳的是陣列首位址,根據偏移來運算元組,這樣看起來好像是真在運算元組一樣。另外你程式報錯是因為輸入沒有加「&」。

void repeat(city *la,char name,int x,int y)

改為:void repeat(city *la,char * name,int x,int y)

因為char name[10]是陣列,而函式的引數為字元,所以呼叫失敗。

結構體陣列傳給指標,實質上是不可能的,本質上傳的是陣列首位址,根據偏移來運算元組,這樣看起來好像是真在運算元組一樣。就和普通指標一樣使用,只不過它是結構體陣列。

2樓:顏之天使長

結構陣列也是陣列,傳遞結構陣列的名稱就是傳遞指標,只要注意新指標指向型別也是同乙個結構型別編譯器就不會卡你了,給你個我做實驗驗證指標陣列屬性的時候寫的**和跑的結果截圖你慢慢體會下

裡面兩個強制轉換就涉及到了對底層實現的理解,「型別」這個概念的本質就是告訴程式怎麼解釋一段記憶體裡的資料,我這裡初始化了兩個整數,按位元組分割每個位元組都是可顯示的ascii字元,便於驗證。後面把兩個整數的位址賦給了乙個指向結構體的指標和乙個指向結構陣列的指標,結合結構體的定義,就是在告訴程式把e這個4位元組的記憶體裡的資料解釋為4個ascii字元,g這個8位元組記憶體裡的資料解釋為2*4個ascii字元,然後剩下的列印就不需要解釋了

關於c語言中的結構體陣列作為函式引數傳遞的

3樓:匿名使用者

typedef struct studentstudent;

#define len 10

//print all student infomationvoid fun(student *pstu,int len)}int main ()

結構體,求解釋不同,陣列與結構體的區別

上面那個第乙個結構體在宣告乙個名為 bitnode 結構體的同時定義了乙個名為 bitnode 的結構體變數,類似於int i,只不過int是編譯器自帶的一種變數型別 第二個結構體如果加上 typedef bitnode bitnode 就和第乙個一樣了。第二個問題其實在第一問已經解決了,就是自定義...

請問結構體陣列賦值的方法?具體看下面

應該可以這樣 for int i 0 i 10 i strcpy char dest,char src 第乙個引數是目標位址,第二個是要複製的源位址 注意只要提供首位址即可 strcpy函式,兩個引數必須是字元型指標型別,第二個引數必須是完整的字串,也就是必須帶 0 結束標誌。不能strcpy us...

c語言程式設計指向結構體陣列的指標,C語言程式設計指向結構體陣列的指標

1 結構體指標其實是乙個指標,它儲存的是指向某個結構體的 位址 所以結構體指標陣列儲存的其實是指向一組結構體的 位址 陣列,它本身並不包含結構體的具體內容 沒有被分配記憶體 2 所以當用到他們時,要麼重定向,比如 d b 讓d指向b,d儲存的是b的位址,這樣就能通過d來呼叫b了 要麼用malloc為...