黑马程序员技术交流社区

标题: 指针与数组中因为变量名容易产生误解的地方, [打印本页]

作者: yufang1993    时间: 2015-11-12 08:16
标题: 指针与数组中因为变量名容易产生误解的地方,
本帖最后由 yufang1993 于 2015-11-12 08:22 编辑


上图int *q=&arr的写法错误,应为int (*q)[3]=&arr;
上图int *q=&arr的写法错误,应为int (*q)[3]=&arr;
#include <stdio.h>
int main(){
    int arr[3]={1,2,3};
    int *p=&arr[0];
    //    int *pp=&arr;错误写法.&arr取出后是数组类型的指针,而int *变量名是用以接收int 型指针的,此时返回一个警告,incompatible pointer types initializing 'int *' with an expression of type 'int (*)[3]' [-Wincompatible-pointer-types]
//    int (*p)[3]=&arr;//老师讲解以方便起见,此处仍然写p,但此p和上面的p意义不一样,此处,p代表数组的指针,上面的p代表数组中首元素的指针.此处返回:error: redefinition of 'p' with a different type:为了便于区分,不至混淆,应这样写:
        int (*pp)[3]=&arr;
    printf("数组名或数组首元素的地址:%p\n数组的地址%p\n",p,pp);
    /*
     返回:数组名或数组首元素的地址:0x7fff5fa0ec0c
                      数组的地址0x7fff5fa0ec0c
     */
    return 0;
}

屏幕快照 2015-11-11 09.30.23副本.png (217.52 KB, 下载次数: 5)

1

1

作者: yufang1993    时间: 2015-11-12 08:19

作者: 许本亮    时间: 2015-11-12 08:47
学习,学习
作者: yufang1993    时间: 2015-11-12 18:29
许本亮 发表于 2015-11-12 08:47
学习,学习

互相学习!!!!!!!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2