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

应该是编译器问题~~看来我那个VC还是忽略了一些细节…………~~~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-05-23 00:29
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
回复 20楼 renkejun1942
好的~那就晚安吧~~我自己先消化一下~~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-05-23 00:29
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
以前总是构思如何把int* p=(int* )a;
其中a为二维数组~~
这样通过指针引用二维数组的值~

结果尝试了很多方法都行不通~那时只能通过int (*p)[3]=a;这样来引用~~

现在凑合点还是实现了~
程序代码:
#include<stdio.h>
int main()
{
    int a[3][3]={{10,20,30},{40,50,60},{70,80,90}};
    int* p=(int* )a;
    int (*pt)[3]=a;

    printf("%d\n",*(*((int (*)[3])p+1)+1));
    printf("%d\n",sizeof(*((int (*)[3])p)));
    return 0;
}


原来读取地址的方式是和数据类型有关~还有sizeof判断数据类型也是通过获取数据类型来进行判断的~~~


[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-05-23 00:53
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
原来还可以这样……~感觉对数据初始化就是默认数据类型~通过强制转型可以改变数据的增量以及读取地址的形式(当然为了方便和可读性~中途还是尽量减少强制转型比较好)~~

程序代码:
#include<stdio.h>
int main()
{
    int a[3][3]={{10,20,30},{40,50,60},{70,80,90}};
    int p=(int)a;

    printf("%d\n",*(*((int (*)[3])p+1)+1));
    printf("%d\n",sizeof(*((int (*)[3])p)));
    return 0;
}

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-05-23 01:04
快速回复:又是一个抽象的指针问题~又来了~~
数据加载中...
 
   



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

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