[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?,一下子没反应过来。借此机会在温习一下指针。

文章描述了这两种差异化的写法

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

int a;
int *b = &a;
int *c = &b;  // 请留意这里

差别在第三行:第一种写法用的是二级指针,通俗易懂;第二种写法比较骚。

为了说明这个问题,我打算用这个图来说明

《[Warning] cast to pointer from integer of different size》

实验目的都是想通过c来访问a,得到结果1

1.1

代码

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

输出
1

图示
《[Warning] cast to pointer from integer of different size》

1.2

代码

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

输出
1

图示
《[Warning] cast to pointer from integer of different size》

    原文作者:myself_oriented
    原文地址: https://segmentfault.com/a/1190000020782752
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞