結構體相關習題的補充

結構體相關習題的補充

題目1:

如有以下代碼:

struct student
{int num;char name[32];float score;
}stu;

則下面的敘述不正確的是:( )

A.struct 是結構體類型的關鍵字

B.struct student 是用戶定義的結構體類型

C.num, score 都是結構體成員名

D.stu 是用戶定義的結構體類型名

解析

struct student
{int num;char name[32];float score;
}stu;//stu是變量

答案 :D

題目2:

下面程序的輸出結果是:( )

struct stu
{int num;char name[10];int age;
};void fun(struct stu *p)
{printf("%s\n",(*p).name);return;
}int main()
{struct stu students[3] = {{9801,"zhang",20},{9802,"wang",19},{9803,"zhao",18} };fun(students + 1);return 0;
}

A.zhang

B.zhao

C.wang

D.18

解析

(*p).name 是訪問結構體,fun(students+1)意思是訪問結構體的第二個成員,不管結構體的實例是什么——訪問其成員其實就是加成員的偏移量

答案 :C

題目3:

下面程序要求輸出結構體中成員a的數據,以下不能填入橫線處的內容是( )

#include < stdio.h >
struct S
{ int a;int b; 
};
int main( )
{ struct S a, *p=&a;a.a = 99;printf( "%d\n", __________);return 0;
}

A.a.a

B.*p.a

C.p->a

D.(*p).a

解析

指針->成員

結構體變量. 成員

答案 :B

題目4:

在VS2013下,默認對齊數為8字節,這個結構體所占的空間大小是( )字節

typedef struct{int a;char b;short c;short d;
}AA_t;

A.16

B.9

C.12

D.8

解析

這個題目需要我們去畫出內存圖

圖例1:

外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳

圖例2:

外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳

步驟一:首先標出所有類型的數的字節大小

步驟二:與默認對齊數進行對比,判斷所占空間大小

步驟三:從0開始,開始計算,根據對齊原則,得到上述結果

外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳

再來好好品一品這張導圖,回顧結構體對齊原則

題目5:

在32位系統環境,編譯選項為4字節對齊,那么sizeof(A)和sizeof(B)是( )

struct A
{int a;short b;int c;char d;
};struct B
{int a;short b;char c;int d;
};

A.16,16

B.13,12

C.16,12

D.11,16

解析

外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳

外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳

外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳

外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳

答案 C

題目6:

下面代碼的結果是:( )

#pragma pack(4)/*編譯選項,表示4字節對齊 平臺:VS2013。語言:C語言*/
//假設long 是4個字節
int main(int argc, char* argv[])
{struct tagTest1{short a;char d; long b;   long c;   };struct tagTest2{long b;   short c;char d;long a;   };struct tagTest3{short c;long b;char d;   long a;   };struct tagTest1 stT1;struct tagTest2 stT2;struct tagTest3 stT3;printf("%d %d %d", sizeof(stT1), sizeof(stT2), sizeof(stT3));return 0;
}
#pragma pack()

A.12 12 16

B.11 11 11

C.12 11 16

D.11 11 16

解析

外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳

答案:A

題目7:

有如下宏定義和結構定義

#define MAX_SIZE A+B
struct _Record_Struct
{unsigned char Env_Alarm_ID : 4;unsigned char Para1 : 2;unsigned char state;unsigned char avail : 1;
}*Env_Alarm_Record;
struct _Record_Struct *pointer = (struct _Record_Struct*)malloc(sizeof(struct _Record_Struct) * MAX_SIZE);

當A=2, B=3時,pointer分配( )個字節的空間。

A.20

B.15

C.11

D.9

解析

#define MAX_SIZE 2+3
struct _Record_Struct
{unsigned char Env_Alarm_ID : 4;//1個字節是八個比特位,這個位段是占4個比特位unsigned char Para1 : 2;//這個是占2個比特位//上面兩個一共占了6個比特位,占了1個字節unsigned char state;//沒有進行表識,說明了它獨占1個字節unsigned char avail : 1;//這也占了一個字節
}*Env_Alarm_Record;
struct _Record_Struct *pointer = (struct _Record_Struct*)malloc(sizeof(struct _Record_Struct) * 2+3);

考點:位段大小的計算

答案 D

題目8:

下面代碼的結果是( )

int main()
{unsigned char puc[4];struct tagPIM{unsigned char ucPim1;unsigned char ucData0 : 1;unsigned char ucData1 : 2;unsigned char ucData2 : 3;}*pstPimData;pstPimData = (struct tagPIM*)puc;memset(puc,0,4);pstPimData->ucPim1 = 2; pstPimData->ucData0 = 3;pstPimData->ucData1 = 4;pstPimData->ucData2 = 5;printf("%02x %02x %02x %02x\n",puc[0], puc[1], puc[2], puc[3]);return 0;
}

A.02 03 04 05

B.02 29 00 00

C.02 25 00 00

D.02 29 04 00

解析

外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳

unsigned char ucPim1;
unsigned char ucData0 : 1;
unsigned char ucData1 : 2;
unsigned char ucData2 : 3; 是結構體位段,ucPim1表示占一個1個字節,下面的數字分別代表占的比特位的大小,首先我們看到2的二進制形式:0000 0010,看到ucPim1占一個字節大小,puc[0]里面是0000 0010,因為是char類型,一個char類型的大小是1個字節大小,相當于8個比特位,看上圖,puc[1]單個大小空間被分成8份,3的二進制位是0000 0011 ,但是ucData只給其分配了1個比特位大小,所以取末尾的1,由此類推,得到puc[1]里面是0010 1001,最后的打印形式是以十六進制的形式打印: 一個十六進制位相當于4個二進制位 所以打印結果為:02 29 00 00

答案

B

2;
unsigned char ucData2 : 3; 是結構體位段,ucPim1表示占一個1個字節,下面的數字分別代表占的比特位的大小,首先我們看到2的二進制形式:0000 0010,看到ucPim1占一個字節大小,puc[0]里面是0000 0010,因為是char類型,一個char類型的大小是1個字節大小,相當于8個比特位,看上圖,puc[1]單個大小空間被分成8份,3的二進制位是0000 0011 ,但是ucData只給其分配了1個比特位大小,所以取末尾的1,由此類推,得到puc[1]里面是0010 1001,最后的打印形式是以十六進制的形式打印: 一個十六進制位相當于4個二進制位 所以打印結果為:02 29 00 00

答案

B

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/19796.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/19796.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/19796.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

正邦科技(day4)

燒錄 一、燒錄固件二、 通訊模塊升級1&#xff1a;USB的方式升級固件2&#xff1a;通過mqtt的方式升級固件3&#xff1a;切換環境 三、 燒錄WiFi1&#xff1a;短接2&#xff1a;燒錄腳本 設備注意事項&#xff1a; 第一種方式&#xff1a;通信模組和MCU都可以統一燒錄BoodLoade…

Oracle Hint /*+APPEND*/插入性能總結

oracle append用法 Oracle中的APPEND用法主要用于提高數據插入的效率。 基本用法&#xff1a;在使用了APPEND選項后&#xff0c;插入數據會直接加到表的最后面&#xff0c;而不會在表的空閑塊中插入數據。這種做法不需要尋找freelist中的free block&#xff0c;從而避免了在…

【計算機畢設】基于Spring Boot的課程作業管理系統 - 源碼免費(私信領取)

免費領取源碼 &#xff5c; 項目完整可運行 &#xff5c; v&#xff1a;chengn7890 誠招源碼校園代理&#xff01; 1. 研究目的 課程作業管理系統旨在為教師和學生提供一個便捷的平臺&#xff0c;用于發布、提交和評定課程作業。本系統旨在提高作業管理的效率&#xff0c;促進教…

Golang反射

文章目錄 基本介紹reflect包reflect.Typereflect.Valuereflect.Kind具體類型、空接口與reflect.Value的相互轉換 反射應用場景修改變量的值訪問結構體的字段信息調用變量所綁定的方法實現函數適配器創建任意類型的變量 基本介紹 基本介紹 在Go中&#xff0c;反射&#xff08;re…

錯誤 0x80070570:文件或目錄損壞且無法讀取/無法訪問[拒絕訪問]-解決方法

1.起因&#xff1a;在挪動&#xff35;盤文件時&#xff0c;出現無法移動的報錯提示&#xff1a; and無法訪問[拒絕訪問]: 2.原因&#xff3b;大多是胡亂拔出&#xff35;盤&#xff3d; &#xff3b;來自0x80070570 文件或目錄損壞且無法讀取 CHKDSK 修復方法-CSDN博客&#…

iOS AVFoundation 音視頻源碼分享

引言 在現代移動開發中&#xff0c;音視頻處理是一個不可忽視的重要領域。iOS 提供了強大的 AVFoundation 框架&#xff0c;使開發者能夠輕松實現音視頻錄制、播放、編輯等功能。無論是創建高效的視頻播放器&#xff0c;還是實現復雜的音頻處理&#xff0c;AVFoundation 都能提…

Leecode---買賣股票最大利潤問題

121—題目&#xff08;只能買賣一次&#xff09;&#xff1a; 給定一個數組 prices &#xff0c;它的第 i 個元素 prices[i] 表示一支給定股票第 i 天的價格。 你只能選擇 某一天 買入這只股票&#xff0c;并選擇在 未來的某一個不同的日子 賣出該股票。設計一個算法來計算你所…

python-pytorch編寫transformer模型實現問答0.5.00--訓練和預測

python-pytorch編寫transformer模型實現問答0.5.00--訓練和預測 背景代碼訓練預測效果背景 代碼寫不了這么長,接上一篇 https://blog.csdn.net/m0_60688978/article/details/139360270 代碼 # 定義解碼器類 n_layers = 6 # 設置 Decoder 的層數 class Decoder(nn.Module)…

【JavaEE進階】——帶你詳細了解Spring日志以及配置日志

目錄 &#x1f6a9;Spring日志的認識 &#x1f6a9;Spring日志的作用 &#x1f6a9;觀察日志 &#x1f6a9;使用日志 &#x1f388;在程序中得到日志對象 &#x1f388;使??志對象輸出要打印的內容 &#x1f6a9;日志框架的介紹 &#x1f388;門面模式(外觀模式&…

Unity實現簡單的第一人稱控制

先看效果 實現方式 1.首先創建一個腳本 2.編輯腳本內容 付上腳本代碼 private float RotationX 0;public float speed 2f;//移動速度// Use this for initializationvoid Start(){Cursor.lockState CursorLockMode.Locked;//鎖定鼠標到中心點Cursor.visible false;//隱藏鼠…

(CPU/GPU)粒子繼承貼圖顏色發射

GetRandomInfo節點(復制貼進scratch pad Scripts) Begin Object Class/Script/NiagaraEditor.NiagaraClipboardContent Name"NiagaraClipboardContent_22" ExportPath/Script/NiagaraEditor.NiagaraClipboardContent"/Engine/Transient.NiagaraClipboardConten…

uni-app+php 生成微信二維碼 分銷海報

主要代碼如下&#xff0c;可直接復制調試參數&#xff1a; //查詢當前用戶是否有分銷海報public function user_poster(){$this->checkAuth();//查詢會員信息$user $this->getUserInfoById($this->user_id);if(!empty($user[distribution_img])){$result[data] $use…

深入解析力扣170題:兩數之和 III - 數據結構設計(哈希表與雙指針法詳解及模擬面試問答)

在本篇文章中&#xff0c;我們將詳細解讀力扣第170題“兩數之和 III - 數據結構設計”。通過學習本篇文章&#xff0c;讀者將掌握如何設計一個數據結構來支持兩種操作&#xff0c;并了解相關的復雜度分析和模擬面試問答。每種方法都將配以詳細的解釋和ASCII圖解&#xff0c;以便…

頭歌數據結構與算法課程設計易 - 青蛙跳臺階

從前有一只青蛙想跳臺階去等峰&#xff0c;若該青蛙一次可以跳上1級臺階、也可以跳上2級、還可以跳3級。那么改青蛙從第0級臺階出發&#xff0c;在跳上第n級臺階且在第m級臺階停留過時有多少種跳法。 輸入描述&#xff1a; 第一行兩個正整數&#xff0c;n和m m<n 輸出描述&a…

kubernetes鏡像下載頁,離線安裝k8s的資源

kubernetes-apt-pool安裝包下載_開源鏡像站-阿里云 (aliyun.com) 【Kubernetes】Kubernetes各大版本的最新版本下載地址_kubet軟件下載-CSDN博客

單位職員尤其女性,若你有文才那將前途無量!

單位職員尤其女性&#xff0c;若你有文才那將前途無量&#xff01; 公司職員尤其女性&#xff0c;若文才出眾&#xff0c;恭喜你&#xff1a;提拔重用你是早晚的事&#xff01;不信看我給你分析-- 再說機關、企事業單位的職員&#xff0c;尤其是體制內職工&#xff0c;你若會寫…

C# List

C# List 創建 List:添加元素:使用 AddRange 方法添加多個元素&#xff1a;插入元素:訪問元素:移除元素:使用 Remove 方法移除一個元素&#xff1a;使用 RemoveAt 方法移除指定索引的元素&#xff1a;使用 RemoveAll 方法移除滿足條件的所有元素&#xff1a; 查找元素:使用 Cont…

Goby 漏洞發布|萬戶ezEIP企業管理系統 /member/success.aspx 命令執行漏洞

漏洞名稱&#xff1a;萬戶ezEIP企業管理系統 /member/success.aspx 命令執行漏洞 English Name&#xff1a;Wanhu-ez-EIP /member/success.aspx Command Execution Vulnerability CVSS core: 9.0 影響資產數&#xff1a;6175 漏洞描述&#xff1a; 萬戶ezEIP是一種企業資源…

在CentOS7下構建TeamSpeak服務器并增加網易云點歌插件

文章目錄 部署TeamSpeak創建一個新用戶下載并解壓服務端下載解壓 啟動服務端同意許可協議啟動與配置開放端口設置開機自啟 客戶端連接 部署TS3AudioBot并添加網易云插件安裝ffmpeg下載TS3AudioBot本體與插件并解壓配置TS3AudioBot啟動設置開機自啟 部署網易云API安裝git安裝Nod…

解讀vue3源碼-2

提示&#xff1a;看到我 請讓滾去學習 vue3編譯模版的提升 文章目錄 vue3編譯模版的提升靜態節點提升補丁標志和block的使用附錄&#xff1a; template explorer可以將我們的源模版轉化成渲染函數代碼&#xff0c;vue2中就有&#xff0c;而Vue3 template explorer 功能更加豐富…