A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 yufang1993 于 2015-11-12 08:22 编辑


上图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;
  • }
上图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, 下载次数: 6)

1

1

3 个回复

倒序浏览
回复 使用道具 举报
学习,学习
回复 使用道具 举报

互相学习!!!!!!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马