C语言笔记:指针的兼容性

笔记创建时间:2018/10/17

两个不同类型的指针不能赋值

int*pt;
int ar1[2][3];
pt = ar1[0];
ar1[0]和pt一样,都是指向一个int类型值的指针,所以可以赋值
一种特殊的情况
int**p2;
int ar2[3][2];
*p2 = ar2[0];
看似不能,但实际上ar2[2]的确能赋值给*p2
变量p2是指向指针的指针,它指向的指针指向int,而ar2是指向数组的指针,该数组内含有2个int类型的元素。
所以,p2和ar2的类型不同,不能把ar2赋值给p2。
但是,*p2是指向int的指针,与ar2[0]兼容。(因为ar2[0]是指向该数组首元素(ar2[0][0]的指针,所以ar2[0]也是指向int的指针))
#include<stdio.h>
int main()
{
       int**p2 = 0, **p3 = 0;
       int ar2[3][2];
       ar2[0][0] = 1111;
       ar2[1][2] = 2222;
       *p2 = ar2[0];
       *p3 = ar2[1];
       printf("%d", (*p2)[0]);
       printf("%d", *(*p3 + 1));
       return 0;
}

 

说点什么

avatar

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据

  Subscribe  
提醒