導航:首頁 > 源碼編譯 > C語言結構體編譯結果

C語言結構體編譯結果

發布時間:2022-09-22 01:56:45

A. 請教一個C語言結構體問題:編譯出現很多錯誤,但是把文件名改成.cpp就能編譯通過了,這是什麼問題啊

樓上說的不全對。

C語言里邊,使用struct來定義結構體,要有struct這個關鍵字編譯器才認得是個結構體。
所以代碼修改如下就能運行了。
#include "stdio.h"
#include "string.h"
#define format "|%-10s |%8d| \n"
#define data p->name,p->jbgz

struct rsda
{
char name[10];
int jbgz;
}tp[]={"liming",2500,"wanggang",3000,"zhanghan",2800,"liuyang",3200,"feng",4300};

void printdata(struct rsda pp)
{
struct rsda *p;
p=&pp;
printf(format,data);
}
void main()
{
printdata(tp[0]);
}
----------------------------
typedef struct rsda
{
char name[10];
int jbgz;
}rsda;
是重新定義了一個新的類型叫rsda,所以下面也就不會報錯了。

B. 執行C語言程序段「struct s{ long a;char b;};printf("%d",sizeof(struct s));」 輸出的結果是什麼說明

sizeof(type)用於返回指定類型所佔內存空間。
比如說,一般的機器上都是:
sizeof(char)返回1,即char類型佔1位元組,
sizeof(long)返回4,即long類型佔8位元組,
對於自定義的數據類型struct s{ long a;char b;};,返回的就是該結構體內所有基本數據類型所佔位元組數的總和,所以sizeof(struct s)應該返回sizeof(long)+sizeof(char)=4+1=5位元組。考慮到現在機器對於數據存儲一般都要求按邊界對齊(這樣可以減少讀取次數),如果按字對齊的話,那sizeof(struct s)也有可能返回6。LZ你寫個測試程序自己測試吧。

C. c語言編譯器怎麼看結果啊

1、要點兩次按鈕,第一次是」編譯「按鈕,看有沒有提示出錯,提示沒出錯,才點「運行」按鈕,出錯要先改對了才能運行,點」運行「按鈕。

2、編譯器就是將「一種語言(通常為高級語言)」翻譯為「另一種語言(通常為低級語言)」的程序。一個現代編譯器的主要工作流程:源代碼 (source code) → 預處理器 (preprocessor) → 編譯器 (compiler) → 目標代碼 (object code) → 鏈接器 (Linker) → 可執行程序 (executables)。高級計算機語言便於人編寫,閱讀交流,維護。機器語言是計算機能直接解讀、運行的。編譯器將匯編或高級計算機語言源程序(Source program)作為輸入,翻譯成目標語言(Target language)機器代碼的等價程序。源代碼一般為高級語言 (High-level language), 如Pascal、C、C++、Java、漢語編程等或匯編語言,而目標則是機器語言的目標代碼(Object code),有時也稱作機器代碼(Machine code)。

D. 在寫C語言結構體時,程序編譯出現以下問題,請求幫助

在主函數中調用input(p);maxi=max(p);這兩個函數的時候,使用的參數是指針p,而在函數實現的時候的參數是結構體型的數組,所以出現警告參數不匹配。而且結構體定義兩遍,你在主函數裡面定義結構體在外部函數裡面是無法使用的,就會出現主函數裡面使用的結構體變數和外部函數使用的結構體變數調用不同。
建議都使用結構體型的數組,這個程序裡面你使用的指針沒有任何意義,反而會引起不必要的麻煩。假如你的結構體數組中學生的數量不確定,建議使用指針鏈表,這個時候指針就很有意義。

E. c語言這個程序輸出結果為什麼是24

這是因為編譯時存在位元組對齊的原因,位元組對齊主要是為了提高內存數據讀取速度。如果你想要讓結果等於實際大小,你可以設置位元組對齊大小如
#pragma pack(1)
取消設置
#pragma pack()

位元組對齊的規則如下:
結構體的大小等於其最大成員的整數倍;
結構體成員的首地址相對於結構體首地址的偏移量是其類型大小的整數倍。
比如double型成員的首地址相對於結構體首地址的偏移量應該是8的倍數;
滿足前兩條規則後,編譯器會在結構體成員之後進行位元組填充。

F. 誰能解釋一下c語言結構體為什麼結果是8

這個gen不是結構體變數,而是指向一個結構體的指針變數,那指針的長度就是地址的長度了,32位地址系統是4個位元組,64位地址系統是8個位元組,你的vs應該是64位模式,所以結果就是8

general結構體佔用的內存按照對齊原則是24個位元組

G. C語言中自己編的結構體數組,結果發現程序運行結果不對

在你基礎上改了下,望採納!!!

#include<stdio.h>

main()

{

struct Staff

{

char number;

int money;

int work;

int praise;

} sta[4];

int i;

for(i=0;i<4;i++)

{

scanf("%c %d %d %d",&sta[i].number,&sta[i].money,&sta[i].work,&sta[i].praise);

getchar();

}

for(i=0;i<4;i++)

{

printf("%c %d %d %d ",sta[i].number,sta[i].money,sta[i].work,sta[i].praise);


}

printf(" ");

return 0;

}

H. c語言結構體 編譯出錯

b b1={a1,a2,0};
改成:
b b1={{0,0}, {1,1} , 0};
編譯器不支持用結構體變數來初始化結構體變數成員

閱讀全文

與C語言結構體編譯結果相關的資料

熱點內容
反編譯自己製作的軟體 瀏覽:33
ros用c還是python好 瀏覽:76
安卓九系統提醒怎麼關 瀏覽:654
我的世界伺服器有領地怎麼抄家 瀏覽:34
python實現多態 瀏覽:300
幼師pdf 瀏覽:941
你怎麼用python開發游戲 瀏覽:645
雷霆戰機伺服器異常是什麼問題 瀏覽:669
程序員客棧20 瀏覽:254
化妝pdf下載 瀏覽:923
takla伺服器ip地址 瀏覽:357
歐盟加密資產法律 瀏覽:573
威綸通反編譯密碼是多少 瀏覽:201
51單片機有40個外部引腳 瀏覽:956
山西撥號伺服器雲空間 瀏覽:714
python中階乘怎麼計算 瀏覽:530
linux查看塊大小 瀏覽:554
空調壓縮機壓力低 瀏覽:184
pdf怎麼復制粘貼文字 瀏覽:575
網上認證系統認證伺服器地址 瀏覽:302