4c語言數據類型和變量

2.1數據類型知多少
4c語言數據類型和變量
對於類型所佔的內存是多大,能夠使用sizeof()測試。
空類型:普通變量沒有這個類型,指針類型有這個類型
數據類型的本質是:固定內存大小的別名。
2.2基本類型數組

int main()
{
    int a;//告訴編譯器分配4個字節
    int b[10];//告訴編譯器分配4*10個字節
     //類型的本質是固定內存塊大小的別名
     //同過sizeof()測試具體分配多大的內存空間
    printf("sizeof(a)=%d sizeof(b)=%d\n",sizeof(a),sizeof(b));

    return 0;
}

運行結果:ide

4c語言數據類型和變量

//打印數組b的地址
printf("b=%d &b=%d",&b,b);

運行結果:
4c語言數據類型和變量函數

//數組加1
printf("b=%d &b=%d\n",b+1,&b+1);

4c語言數據類型和變量
地址同樣,爲何+1後就不同了那?測試

//是數組首元素地址,一個元素4個字節,加一就是在原地址上加4個字節
     //&b是整個數組的首地址,一個數組是4*40=40個字節,加1就是加了40
         //測一下指針變量的內存大小是多少
     //指針長度是:32位系統,指針長度都是4
    //                      64位系統,指針長度都是8
    char *p;
    printf("sizeof(p)=%d\n",sizeof (p));
    double ***q;
printf("sizeof(q)=%d\n",sizeof (q));

運行結果:
4c語言數據類型和變量
2.3數據類型的別名:typedef3d

typedef unsigned int u32;
//第一種結構體
struct std1
{
    int a;
    int b;
};
//第二種別名結構體
typedef struct std2
{
    int c;
    int d;

}std2;
int main()
{
    u32 t;//給unsigned int 類型取別名
    t=33;
    //typedef 一般與結構體一塊兒使用
    //使用第一種結構體
    struct std1 std={1,2};
    std.a=3;
    //使用第二種別名結構體
    std2 std3={3,4};
    std3.c=2;
    return 0;
}

2.4void類型
先看一下void怎麼用指針

4c語言數據類型和變量
4c語言數據類型和變量

//* void 無類型
// * 1函數參數爲空,定義函數時,能夠用void修飾
// * 例如:int fun(void);
// * 2函數沒有返回值:void fun(void);
// * 3不能定義void類型的普通變量:void a;//error沒法肯定類型,不一樣類型分配內存不同
// * 4能夠定義void *變量:void *p;//ok,32位分配4個字節,64位分配8個字節,能夠固定
// * 5數據類型本質就是固定內存塊大小
// * 6void *p萬能指針,函數返回值,函數參數

int main()
{

    // c語言規定:只有相同類型的指針才能相互賦值,如是不一樣須要類型強制轉換
    char *p=(char *)malloc(sizeof(char)*10);

    return 0;
}

void的具體用法咱們會在後面慢慢體會它的好處。
2.5變量
C語言規則:變量必須先定義才能使用。code

//變量本質是一段連續的內存空間別名
//變量至關如門牌號,而內存就至關於房間
//能夠經過門牌號找到房間
int main()
{
    //直接賦值
    int a=20;
    int *p;
    printf("a=%d\n",a);
    //間接賦值
    //指針指向誰,就把誰的地址賦值給指針,指針就指向其內存
    printf("&a=%d\n",&a);
    p=&a;
    printf("p=%d\n",p);
    *p=10;
    printf("a=%d\n",a);
    printf("*p=%d\n",*p);
    return 0;
}

運行結果:
4c語言數據類型和變量blog

相關文章
相關標籤/搜索