指向数组指针与指向整形数的指针

版权声明:本文为博主原创文章,未经博主允许不得转载。个人博客:www.blogtextbook.com https://blog.csdn.net/DZRYWYBL/article/details/90048533

最近看书看到二维数组与指针的章节,将一个二维数组名字赋值给一个指向整形数的指针,咋看没毛病,其实还是数组与指针的概念没有理清楚,先放代码。

#include <stdio.h>
int Array[1][2]={1,2};
int main(void) { 
    int *p;
    //p = Array;  两边的类型不一样不能直接赋值
    if(*Array == Array[0])
    {
        printf("OK\n");
    }
    return 0;
}

首先int *p定义了一个指向整形变量的指针。

int Array[2][2]={1,2,3,4}

这个语句说明Array是一个数组,该数组拥有1个数组类型的元素,其中每个元素是一个拥有2个整形元素的数组。

Array数组名代表指向第一个元素的指针,而该元素是一个数组,立即推--->Array是一个指向数组的指针。而P是一个指向整形变量的指针,两者类型都不一致,所以 p = Array; 是错误的。

下面我又做了一个变换*Array就是指向第一个数组中的第一个整形数的指针了,更容易理解了,上述代码最终输出OK。

 如果上述代码不注释则会提示:error: cannot convert ‘int [1][2]’ to ‘int*’ in assignment,就是类型不匹配。

猜你喜欢

转载自blog.csdn.net/DZRYWYBL/article/details/90048533