1. 程式人生 > >2018 -0522 C 語言 ->

2018 -0522 C 語言 ->

做題目時候遇到一個問題程式碼如下:

 struct bem{
        int a;
        char type[30];
    };

    struct bem *pt;
    struct bem deb ={
        5,
        "abc"
    };
    pt = &deb;
    printf("%s \n",(pt->type)+2);

    這裡問題問輸出什麼,一開始我認為是不能輸出,認為 pt->type 是取結構體的成員,而結構體的成員是char 型別,那怎麼把char型別的與2相加。

    這裡忽略了一點 %s ,首先%s輸出字串的過程是:

從首地址開始逐位元組定址,把儲存單元(一個位元組)內的資料轉換為ASCII字元格式輸出。

    所以%s 的輸入是地址形式,所以+2代表結構體成員type的首地址加2,那也就是從c開始列印,輸出結果為c。