首页
社区
课程
招聘
[求助]关于数组于指针
发表于: 2016-3-9 10:00 3894

[求助]关于数组于指针

2016-3-9 10:00
3894
大神们好,


    [*]#include <iostream.h>

    [*]void main()
    [*]{
    [*] int a[4][4];
    [*] int *p;
    [*] p=a[1];
    [*]}


这里面的p可不可以=a?

我试了一下
p=a;
,报错了。

为什么呢?a不也是个地址吗?为什么不能直接p=a呢?

谢谢

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (13)
雪    币: 100
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
当我们引用数组元素时下标从0开始,小于元素的个数,且只能逐个引用数组元素,而不能直接引用整个数组。
2016-3-9 10:03
0
雪    币: 134
活跃值: (11)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
3
类型不同,看报错信息不就有原因嘛
2016-3-9 10:17
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
谢谢,不过问题不是下标是几,只是不明白:a是个地址,为什么不能直接传给p呢?
2016-3-9 10:48
0
雪    币: 56
活跃值: (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
好像需要(int *)强转一下 坐等大神解答
2016-3-9 10:56
0
雪    币: 488
活跃值: (3149)
能力值: ( LV7,RANK:140 )
在线值:
发帖
回帖
粉丝
6
正规写法:
        int a[4][4];
        int (*p)[4];
        p=a;

猥琐的写法是强制类型转换:
        int a[4][4];
        int *p;
        p=(int*)a;
这种写法的话,你需要自己去计算索引数组元素
2016-3-9 10:56
0
雪    币: 83
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
arr的类型和p的类型不同。编译器认为arr的类型是int [4][4], 而p是int *
2016-3-9 12:32
0
雪    币: 80
活跃值: (109)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
8
指针本来就是个地址,可以转换。通过这句话就知道,楼主先可以转void *或int
2016-3-9 12:49
0
雪    币: 38
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
指针不是地址,只是指针的类型刚好适合用来存储地址....
2016-3-9 16:45
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
[QUOTE=yeyeshun;1418981]正规写法:
        int a[4][4];
        int (*p)[4];
        p=a;

猥琐的写法是强制类型转换:
        int a[4][4];
        int *p;
        p=(int*)a;
这种写法的话,你需要自己去计算索引数组元素[/QUOTE]

谢谢夜夜顺,只是不明白为什么同样都是地址,p为啥不能等于a呢?为什么还需要转换?
2016-3-9 17:59
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
[QUOTE=wsjswy;1419003]arr的类型和p的类型不同。编译器认为arr的类型是int [4][4], 而p是int *[/QUOTE]

既然arr于p类型不同,为何却可以写成p=a[0]?
2016-3-9 18:01
0
雪    币: 83
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
a[0]代表的是一个一维数组。例如你定义int brr[4], int *p; p = brr
2016-3-9 19:55
0
雪    币: 488
活跃值: (3149)
能力值: ( LV7,RANK:140 )
在线值:
发帖
回帖
粉丝
13
因为指针类型不一样啊
2016-3-10 10:09
0
雪    币: 26
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
a是个二维的常地址,而*p则是一维的指针,只能指向一维的地址a[1]
2016-4-24 22:11
0
游客
登录 | 注册 方可回帖
返回
//