[Warning] cast to pointer from integer of different size

報錯:[Warning] cast to pointer from integer of different size [-Wint-to-pointer-cast]
中譯:[警告]把指針不一樣大小的整數(-Wint-to-pointer-cast)

起源:看到了知乎這個問題指針的指針定義爲何用int * ptr,而不是int ptr?,一會兒沒反應過來。藉此機會在溫習一下指針。spa


文章描述了這兩種差別化的寫法3d

int a;
int *b = &a;
int **c = &b;

指針

int a;
int *b = &a;
int *c = &b;  // 請留意這裏

差異在第三行:第一種寫法用的是二級指針,通俗易懂;第二種寫法比較騷。code


爲了說明這個問題,我打算用這個圖來講明blog

1.png

實驗目的都是想經過c來訪問a,獲得結果1get

1.1 it

代碼io

#include <stdio.h>                                
int main()                                         
{   
    int a=1;
    int *b = &a;
    int *c=b;  // 請留意這裏
    
    printf("%d\n",*c);
}

輸出
1ast

圖示
2.pngclass

1.2

代碼

#include <stdio.h>                                
int main()                                         
{   
    int a=1;
    int *b = &a;
    int *c=(int*)&b;  // 請留意這裏
    
    printf("%d\n",**(int**)c);
}

輸出
1

圖示
3.png

相關文章
相關標籤/搜索