筆記試験でsizeofがバイト数を求める問題
2884 ワード
1、
void fun(char ch[100])
{
cout<<sizeof(ch)<<endl;
// sizeof(ch)=?;
}
この場合、配列名はパラメータとしてポインタに退化するのでsizeof結果は4(32ビットコンパイラ)である.
2、
int *p=(int *)malloc(100);
cout<<sizeof(p)<<endl;
答えは4(32ビットコンパイラ).
sizeof(p)はポインタサイズしか測定できず,sizeofは動的に割り当てられた配列サイズを測定できない.
3、
int x[10]={0};
cout<<sizeof(x)<<endl;
int y[]={9,1,2,3};
cout<<sizeof(y)<
出力:40 16
4、構造体
C言語-構造体が占めるバイト数の内容は少し多く、何度も見ることができます
構造体が占める空間サイズの演算
構造体が占めるバイト数について、メモリの位置合わせの心得
【C言語】構造体占有バイト数及び記憶と空間配分
5、共用体:共用体の各メンバーは共通のメモリセルを占有し、同じヘッダアドレスを有し、メモリセルの最も多くのメンバーを占有する長さは共用体の長さである.
struct stru{char c;int a;};
union uni{char c;int a;};
struct stru st={0};
union uni un={0};
cout<<sizeof(st)<<endl;
cout<<sizeof(un)<
32ビットコンパイラ出力:
8
4
転載先:https://www.cnblogs.com/Tang-tangt/p/9073810.html