關於C語言結構體相關的問題,請大俠幫忙!

2023-03-19 14:00:06 字數 4095 閱讀 4261

1樓:五白曼

首先,子函式里面的引數的作用範圍只在子函式內,所以不可能將結構體引用回主函式。

其次,如果你想應用子函式中的結構體,你應該將結構體定義為全域性變數,然後在主函式呼叫子函式時,將結構體的地址傳遞給子函式,這樣子函式便可對結構體進行處理,而且主函式也能直接引用結構體的值。

最後,你adcde_function(&ptr_這樣的呼叫是錯誤的,你的意思是將16個結構體的首地址傳給子函式。

2樓:匿名使用者

大概領悟了一下你的意思,個人理解。

cd_struct裡 存放在一個16位char的陣列裡的 ip 是要拿到函式adcde_function裡用的引數;

另一個結構體ab_struct裡的itme存放16個ip;

可以理解ip是 unsigned long 型的 即 ptr_是unsigned long型的;

所以, 想使用ip, 在ptr_的基礎上再取地址就好;

adcde_function(&ptr_;這樣的引用方法就沒錯, 不過因為當時定義時候itme是16個元素所以這裡x最大能取到15;

3樓:匿名使用者

adcde_function(unsigned long *ptr)中定義的形式引數是無符號長整型指標陣列,實際上是「雙重指標」,因此,實參應該用無符號長整型雙重指標,即:unsigned long **

但是你的引用:adcde_function(&ptr_;中 &ptr_ip.

itme[16]存在兩個問題,第一個是結構體中不存在itme[16]這個元素,另一個是itme[16]是一個元素,因此在前面取地址只能得到「一個結構體變數的」一重指標,造成資料型別(含基本數型別和指標型別)不匹配。

4樓:網友

這樣就可以:

adcde_function((unsigned long **ptr_;

不過注意處理,處理起來還清楚內容。

5樓:匿名使用者

什麼叫怎麼引用?你傳進去的就是cd_struct指標陣列。

c語言結構體型別

6樓:匿名使用者

遞迴是呼叫自身,資料結構裡的連結串列定義裡邊是結構體指標,而非結構體自身,不是遞迴呼叫。

7樓:匿名使用者

線性表單連結串列並沒有遞迴呼叫啊,他是用指標指向下一個連結串列struct lnode *next;

你去在理解下遞迴思想。

8樓:匿名使用者

呵呵,前面的都沒說到問題的本質。

建議你先去了解下什麼是指標,什麼是指標變數。

因為指標變數是存放指標的,並沒有被分配所指向資料型別的記憶體。

從你第一個結構體型別來看是錯的,因為struct student kobe; 這樣是申請一個結構體變數,這樣就分配記憶體了,這裡請理解普通變數和指標變數的區別!接著這樣造成的後果是會無休止申請結構體變數->分配記憶體->申請結構體變數->分配記憶體。

但是指標變數就不同,只佔4個位元組而已。並非真正意義上的結構體變數,因為它所佔有的記憶體並非是結構體大小的記憶體。

這都需要自己去多寫程式,多理解,說不明白的,只能自己悟。

若程式中定義的結構體名是stu,則該結構體的型別名是

9樓:

摘要。你好,若程式中定義的結構體名是stu,則該結構體的型別名是stu_type。要定義結構體,需要執行以下步驟:

1. 使用關鍵字struct宣告一個新的結構體;2. 在大括號內定義結構體的成員;3.

使用typedef為結構體設定一個別名(型別名)。

諮詢記錄 · 於2023-01-02

若程式中定義的結構體名是stu,則該結構體的型別名是。

你好,若程式中定義的結構體名是stu,則該結構體的型別名是stu_type。要定義結構體,需要執行以下步驟:1.

使用關鍵字struct宣告一個新的結構體;2. 在大括號內定義結構體的成員;3. 使用typedef為結構體設定一個別名(型別名)。

注意事項:1. 定義結構體時使用關鍵字struct;2.

確保在定義結構體時已宣告該結構體的大小;3. 使用typedef為結構體設定一個別名(型別名);4. 定義結構體成員時,要確保其記憶體佔用量可以滿足要求且不超出該結構體的大小。

抱歉,還請您用文字描述一下。

不可以發**嗎。

沒辦法識別

或者你轉成文字。

這個咋轉文字啊。

你可以直接雙指識別,或者截圖到相簿裡進行識別,轉成問題。

# include >int x=1;void myfun(int y){ int x=5; x+=y;printf(「%d,」,x);/西文逗號}void main(){int b=3;myfun(b);x+=b;printf(「%d」,x);}

程式的輸出結果是8,因為在myfun函式中,x的值加上引數y,此時y的值為3,所以最終x的值為8,在main函式中再次輸出x,則最終x的值也是8。

# include >union un{struct{long m; long n;}r;long s;long t;};void main(){printf("位元組數=%d", sizeof( union un));

程式的輸出結果是8,因為union un中只有一個long型變數,而long型變數佔8個位元組,所以union un的位元組數也就是8個位元組。

抱歉,我沒辦法識別

若程式中定義的結構體名是stu,則該結構體的型別名是

c語言結構體程式設計題,求助大神啊

10樓:自我程式設計

根據題意:

一、教師資訊定義為結構體,其成員年月也為結構體(可直接定義成兩個成員變數,本題沒有強制要求),婚姻狀態採用共用體型別。

二、輸入資訊直接寫在main函式,實際軟體開發應單獨寫輸入函式,輸入驗證我只寫了性別和婚姻狀態的驗證,其餘成員的輸入驗證需要自己新增。(實際開發,驗證也應單獨寫函式呼叫)。

三、輸出單獨函式。

#include

typedef union matype//結婚狀態共用體mte;

typedef struct s_datesdate;

typedef struct teacherteer;

void printftinfo(teer tinfo);

int main()

void printftinfo(teer tinfo)}

c語言結構體函式問題

11樓:程式設計師數學分析

第一題中的name為什麼是sundan

第一題中的num為什麼該值:()

注意了,壓根沒有使用f的返回值,f也沒有返回值(void)第二題(不再畫圖了),main中的s[0]與f中的p壓根是兩個記憶體區域(當然了,傳引數時,將s[0]記憶體區域的內容拷貝到了p記憶體區域),所以顯然,在f中修改記憶體區域p,自然不會影響main中的記憶體區域s[0],因此s[0]亦然保持本來的值。(即20041, 703)

12樓:匿名使用者

第一個:name為傳址,num為傳值。所以name在函式里面改變,在主函式里面也會改變。num在函式里面改變,不會影響到主函式。

第二個:同第一個的num,都是傳值。

13樓:

看程式構,從上往下執行,最後呼叫函式,就是最終邏輯結果;

第二題,更容易理解了;即20041, 703

c語言關於下面的結構體**我有一些疑問?

14樓:網友

問題1:p2設計是用來指向上次申請空間的結構體指標,申請新空間給p2幹什麼呢,不符合邏輯,並不是一個指標要對應一個新的申請空間。

問題3:在問題1解答中已經解釋p2的作用,就是記錄上一結點結構體的指標,比如現在分配了新的結點空間,要讓上一結點與當前結點連結在一起,必須知道上一結點的位置,這個p2就是上一結點的指標,p2->next=p1;這句就完成了上一結點和當前結點鏈在一起。

c語言結構體別名定義問題,C語言結構體別名定義問題

typedef struct stu linklist 此處第一了一個型的型別,即struct stu 即指向結構體stu的指標 所以head的型別也就是struct stu head為一個指向stu結構體型別的指標。但是並沒有未其分配具體的空間。可以將一個已定義為stu結構體的指標賦給它。c語言給...

c語言關於外部檔案呼叫結構體變數的問題急求

最終的答案我已經找到 file head.h struct test 這裡不能定義任何變數,因為標頭檔案被許多檔案包含,會出現重複定義 extern struct test right 申明結構體變數 right 在其它檔案中定義 file use.c struct test right 在這裡將 ...

c語言程式題,關於結構體資料的,請解釋下這段程式的意思

答案沒拍出來吧 執行結果應該是qian,m,290,qian,f,350 就是給結構體賦值啊,strcpy是將字串複製到name中 c語言程式設計程式設計題目 請 編寫完成對學生相關資訊的要求 1.定義一個結構體型別student,其中包括三個成 c語言課程設計任務書 一 題目 學生成績管理 二 目...