關於結構體的一些問題

2021-09-07 23:22:40 字數 723 閱讀 8340

關於結構體的一些問題:

(1)、什麼是結構體? 

(2)、一般在什麼情況下用到結構體? 

(3)、什麼是結構體內存對齊?為什麼要對齊?怎樣對齊?

(4)、對齊引數如何設定?可以設定為按照任意位元組數對齊嗎? 

答:(1)結構體是構造型別的一種,是一種根據自身需要,由基本資料型別組成的新的資料型別。

(2)在函式中需要返回多個值時,可以通過構建結構體達到目的;當基本資料型別,不能滿足自身需要時,使用結構體組建自己的資料型別。

(3)結構體內存對齊:元素是按照定義順序乙個乙個放到記憶體中去的,但並不是緊密排列的。從結構體儲存的首位址開始,每個元素放置到記憶體中時,它都會認為記憶體是按照自己的大小來劃分的,因此元素放置的位置一定會在自己寬度的整數倍上開始。 

struct   a

;

(3.2)為什麼要對齊

2.硬體原因:經過記憶體對齊之後,cpu的記憶體訪問速度大大提公升。

(4)在windows中,vs編譯器下,預設對齊數為8; 在linux中,預設對齊數為4 

設定對齊引數可在結構體struct之前加上#pragma pack(對齊數),在struct之後加上#pragma pack;便可以設定對齊引數。對齊引數不能任意設定,只能是內建型別已有的位元組數,如:char(1)、short(2),int(4),double(8)…不能是3,5…任意數。

記憶體管理及結構體的一些問題

1.未初始化的全域性變數 bss段 和初始過的全域性變數 data 的區別?bss型別的全域性變數只佔執行時的記憶體空間,而不佔檔案空間 data 段用來存放那些初始化為非零的全域性變數,既佔檔案空間,又佔執行空間。在整個程式的執行週期內,data 資料是一直存在的。2.常量資料 rodata 的問...

關於面試的一些問題

面試過程中,面試官會向應聘者發問,而應聘者的回答將成為面試官考慮是否接受他的重要依據。對應聘者而言,了解這些問題背後的 貓膩 至關重要。本文對面試中經常出現的一些典型問題進行了整理,並給出相應的回答思路和參 讀者無需過分關注分析的細節,關鍵是要從這些分析中 悟 出面試的規律及回答問題的思維方式,達到...

關於Labview的一些問題

第一章 虛擬儀器及 labview入門 1 虛擬儀器概述 虛擬儀器 virtual instrumention 是基於計算機的儀器。計算機和儀器的密切結合是目前儀器發展的乙個重要方向。粗略地說這種結合有兩種方式,一種是將計算機裝入儀器,其典型的例子就是所謂智慧型化的儀器。隨著計算機功能的日益強大以及...