筆記試験で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