1樓:匿名使用者
這個warning主要是由於你遞迴形式的定義了新的type test和struct test不匹配導致的。
正確寫法是,另起一個結構體名。
2樓:紀元玩遊戲
結構體可以被宣告為變數、指標或陣列等,用以實現較複雜的資料結構。結構體同時也是一些元素的集合,這些元素稱為結構體。
3樓:匿名使用者
雖然邏輯上相等但是編譯器不夠聰明。改學c++吧,c的意義已經越來越小了。
4樓:yx陳子昂
typedef struct的時候沒有命名,那麼定義裡面是struct test就是另外一個結構。
c語言問題:如下定義的結構體型別為啥編譯錯誤,編譯平臺為visual studio 2013 ?
5樓:匿名使用者
在你定義node *pnext;/的時候系統還不知道node是啥(node定義在結構體結尾)
typedef struct node node;
6樓:網友
改成這樣應該就可以了。
typedef struct node node;
c語言結構體,為啥這樣子分配不到記憶體?
7樓:倒黴熊
因為第二個是值傳遞,在函式內部發生的任何的變化都不會影響到函式外的變數。
而第一個傳遞是地址。
8樓:網友
void initstack(mystack *mstack)
函式宣告中的引數是:mystack *mstack,引數是一個mystack 型別的指標。
1)mystack mystack;
正確,將變數 mystack 的地址作為 initstack 的引數,引數型別匹配。
initstack(&mystack);
void initstack(mystack *mstack)
函式宣告中的引數是:mystack *mstack,是一個mystack 型別的指標。
2)mystack mystack;
錯誤,將變數 mystack 的本身作為 initstack 的引數,引數型別不匹配。
initstack(mystack);
9樓:無庸自道
3樓哥們說的不錯。
typedef mystack *mystack,說明mystack是個結構體指標型別,那麼mystack mystack這句表示mystack是個mystack 型的結構體且是個指標。所以實參是一重指標,而形參*mstack這是個二重指標,所以要麼像3樓那麼改,要麼就直接將void initstack(mystack *mstack)改為void initstack(mystack mstack)也可。
c語言結構體問題
10樓:網友
你把最高分的族改人的下標記下兆李判來就行擾指,對於結構體變數直接賦值,返回地址是錯誤的問題,我也搞不清楚。我用下標做出來的行的。
11樓:網友
char *best錯了吧,應該是char best
best=s[j}改成strcpy(,s[j].id);
12樓:匿名使用者
函式名和裡面定義的結構體不要同名試試。
13樓:年少天下
s是什麼?沒有宣告。且裡面沒引數。
c語言題目:要求輸入學生的資訊(結構體型別),為什麼輸入完第二項,電腦就出錯?編譯時,沒顯示錯誤。
14樓:匿名使用者
for (i=1;i<=3;i++)這是輸入三個學生的資訊。所以必須是三個結構體,因此要改成結構體陣列。
#include
int main ()
meassage[3];
for (i=0;i<3;i++)
printf("可以");
return 0;}
c語言中不是說 結構體也能強制轉換型別的嗎,為什麼寫的這段**會報錯呢?
15樓:匿名使用者
結構體是通過指標實現的強制型別轉換吧。
main();
struct a2 y =
struct a2 z;
struct a2 *p;
p = struct a2 *)x;//這種強制型別轉換,把x當a2型別變數使用就通過這個p指標。
p->a;
printf("%d",;
16樓:報廢
我也想說是誰告訴你可以強制轉換的。
17樓:匿名使用者
沒繼承關係,搞什麼強制型別轉換啊。。。
18樓:換小米
有這樣的結構體轉換麼?就算有,這樣使用肯定是不正確的,你想要達到的目的是什麼?
19樓:匿名使用者
是哪個告訴你「結構體也能強制轉換型別」
c語言結構體問題:
20樓:匿名使用者
如果沒有typedef的話,old就是一個結構題變數。
b改為那個是對的。
typedef的作用就像巨集一樣,可以理解為 「將***起名為***old和struct node是一個東西。
21樓:匿名使用者
typedef struct node
old;相當於struct node
typedef struct node old; /所以d錯 c對 old是結構體型別 不是物件。
struct node是一個結構體型別」對不對?對。
22樓:匿名使用者
你用node的時侯。
struct node 變數名。
對比int 變數名。
型別。old這個看c語言書。有教。
c語言結構體型別
23樓:匿名使用者
遞迴是呼叫自身,資料結構裡的連結串列定義裡邊是結構體指標,而非結構體自身,不是遞迴呼叫。
24樓:匿名使用者
線性表單連結串列並沒有遞迴呼叫啊,他是用指標指向下一個連結串列struct lnode *next;
你去在理解下遞迴思想。
25樓:匿名使用者
呵呵,前面的都沒說到問題的本質。
建議你先去了解下什麼是指標,什麼是指標變數。
因為指標變數是存放指標的,並沒有被分配所指向資料型別的記憶體。
從你第一個結構體型別來看是錯的,因為struct student kobe; 這樣是申請一個結構體變數,這樣就分配記憶體了,這裡請理解普通變數和指標變數的區別!接著這樣造成的後果是會無休止申請結構體變數->分配記憶體->申請結構體變數->分配記憶體。
但是指標變數就不同,只佔4個位元組而已。並非真正意義上的結構體變數,因為它所佔有的記憶體並非是結構體大小的記憶體。
這都需要自己去多寫程式,多理解,說不明白的,只能自己悟。
c語言結構體,這個程式的錯誤在哪?
26樓:戊問鮃
#include
#define n 10
struct student//定義結構體型別;void main()
s[k].sum=s[k].score[1]+s[k].score[2]+s[k].score[3];
printf("%d",s[k].sum);
這是改過的,可以執行,但是因為不清楚你的具體要求,你那個sum怎麼是個陣列呢,你可以試一下,不行hi我。
27樓:
都是陣列還有一個是char型別的,那個scanf絕對會出錯的,即使當時沒問題,輸入的也不是你想要的!即使,也只是從輸入資料裡讀一位整數還是要求,那個num的空間夠整數的才行,那個scanf)前的「是出錯的原因,但程式一團糟,改了也不會太好,還是想好。
28樓:兩極
這句話裡 2個,&s[k].score[0]
s[k].sum=s[k]score[1]+s[k].score[2]+s[k].score[3];
既然你都知道 陣列下標是從0開始的 這句話為什麼是1 2 3 應該是 0 1 2
為什麼你照著書上抄** 都會錯呢 你用的vc吧 編譯一下 按下 f4 就知道錯誤在**了 不是說了嗎 你少了個 括號 )
C語言結構體名和結構體型別名有什麼區別
結構體型別名可以將不同型別的變數放在一起,應用很廣,具體應用可以拿本c語言的書看看。結構體名就是結構體變數的名字,與變數名類似 c 中結構體的char型別怎麼賦值?如果用baistring的話,要在開頭加上du include 然後struct worker 後邊就可以像你那麼dao直接賦值就行了。...
C語言的結構體和共同體的區別是什麼
結構體 structure 是一種構造型別,它是由若干 成員 組成的。每一個成員可以是一個基本資料型別或者又是一個構造型別,而且每個成員的資料型別可以相同也可以不相同。共同體 union 將幾種不同的變數儲存在同一記憶體單元中,也就是使用覆蓋技術,幾個變數互相覆蓋,這種幾個不同的變數共同佔用一段記憶...
為什麼我的這個C語言程式不的正確輸出等邊三角形?求高手修改
這是因為等邊三角形肯定是等腰三角形,if else的條件是依次判斷的,應把等邊三角形的判斷放在是否是等腰三角形之前 if a c a b b c printf 這是一個等腰三角形 n else if a c a b b c printf 這是一個等邊三角形 n 反過來就行。scanf lf lf l...