| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2355 人关注过本帖
标题:又是一个抽象的指针问题~又来了~~
只看楼主 加入收藏
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
不小心重复发帖了~

[此贴子已经被作者于2017-5-23 00:08编辑过]


[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-05-23 00:06
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
以下是引用九转星河在2017-5-23 00:06:30的发言:


突然发现一个很奇葩的问题~

就是int*[]型竟然找不到强制转型的方法……~


没事了~刚刚找到了~这块我还要补一下才行~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-05-23 00:07
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
收藏
得分:0 
回复 12楼 九转星河
汗……二维数组的问题,你要传递二维数组给 一级指针,很简单啊,传递a[0]就可以了。

09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-05-23 00:11
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
    int a[2][3]={10,20,30,40};

    int (*pss)[3]=a;
    int *ptt=NULL;

    (int (*)[3])ptt=a;
    printf("%d\n%d\n%d\n",*ptt,*pss,*a);

看来就算是强制转型也是有问题~~~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-05-23 00:11
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
回复 13楼 renkejun1942
其实我就试试int (*)[]和int**的区别在哪~~好像是读取地址的形式不同……~~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-05-23 00:14
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
收藏
得分:0 
回复 15楼 九转星河
如果你只看地址的值的话,是一样的。

但是它们的类型不一样 ,二维数组的数组名会退化为指针,指针的类型是 指向数组的指针。
而**a,是二级指针。

09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-05-23 00:16
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
试验成功了~原来是这样~

程序代码:
    int a[2][3]={10,20,30,40,50,60};

    int (*pss)[3]=a;
    int* ptt=a;

    
    printf("%d\n%d\n%d\n%d\n",*(int (*)[])ptt,*ptt,*pss,*a);


输出运行结果理解一下~~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-05-23 00:21
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
收藏
得分:0 
好多警告:

ceshi5.c:6:17: warning: missing braces around initializer [-Wmissing-braces]
     int a[2][3]={10,20,30,40,50,60};
                 ^
ceshi5.c:6:17: note: (near initialization for 'a')
ceshi5.c:9:14: warning: initialization from incompatible pointer type [-Wincompatible-pointer-types]
     int* ptt=a;
              ^
ceshi5.c:12:12: warning: format '%d' expects argument of type 'int', but argument 2 has type 'int *' [-Wformat=]
     printf("%d\n%d\n%d\n%d\n",*(int (*)[])ptt,*ptt,*pss,*a);
            ^
ceshi5.c:12:12: warning: format '%d' expects argument of type 'int', but argument 4 has type 'int *' [-Wformat=]
ceshi5.c:12:12: warning: format '%d' expects argument of type 'int', but argument 5 has type 'int *' [-Wformat=]
程序代码:
/*运行结果:
2293536
10
2293536
2293536*/


09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-05-23 00:25
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
收藏
得分:0 
程序代码:
   
//你的这个代码,14楼的,错误的地方看注释
 int a[2][3]={10,20,30,40};

    int (*pss)[3]=a;
    int *ptt=NULL;

    (int (*)[3])ptt=a;//强制转换的结果是一个右值,所以你的这个表达式会报错。
                        //右值说简单点就是一个存储区域中的内容,而可修改的左值指的是一个变量名所对应的存储区域。
                        //因此,你怎么可以对内容赋值呢?就好像,你不能给 5 赋值 6
    printf("%d\n%d\n%d\n",*ptt,*pss,*a);

09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-05-23 00:28
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
收藏
得分:0 
12点半了,睡觉了,明天似乎要上班。

09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-05-23 00:28
快速回复:又是一个抽象的指针问题~又来了~~
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.034624 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved