| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1315 人关注过本帖
标题:按址寻值,自我标记一下
只看楼主 加入收藏
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
结帖率:99.76%
收藏
已结贴  问题点数:100 回复次数:4 
按址寻值,自我标记一下
程序代码:
    int t[5][3]={{1,2,3},{4,5,6},{7,8,9},{10,11,12},{13,14,15}};
    int* p=t[0];
    int s[15]={0};
    for(int i=0;i<15;i++) s[i]=(int)(&t[i/3][i%3]);
    for(int i=0;i<15;i++) printf("%d ",*((int*)s[i]));
    for(int i=0;i<15;i++) printf("%d ",*(int*)((int)t[i/3]+sizeof(int)*(i%3)));


[此贴子已经被作者于2018-7-5 14:51编辑过]

搜索更多相关主题的帖子: int for i++ printf sizeof 
2018-07-05 14:42
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:50 
int s[15]
应该是
intptr_t s[15]

参见:https://en.

intptr_t是一种能容纳得下普通指针类型的类型
如果不用intptr_t的话,那么在 sizeof(int*) > sizeof(int) 的平台上,你的 s[i]=(int)(&t[i/3][i%3]) 就会被截断
x64架构上,无论是VC默认的LLP64数据模型,还是gcc/clang默认的LP64数据模型,sizeof(int*) 都大于 sizeof(int)
2018-07-05 15:17
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
回复 2楼 rjsp
收到

原本是想给孩子讲一些编程基础  但是发现自己基本功弱了一些  就是数组这块 也无法讲的很透彻

DO IT YOURSELF !
2018-07-05 15:23
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
int t[5][3]={{1,2,3},{4,5,6},{7,8,9},{10,11,12},{13,14,15}};
    int* p=t[0];  这句代码可否使用int **p 来寻址  

DO IT YOURSELF !
2018-07-05 15:25
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:50 
其实二维数组可以转一维处理嘛~

程序代码:
#include<stdio.h>

int main( void )
{
    const int a[5][3]=
    {
        {1,2,3},
        {4,5,6},
        {7,8,9},
        {10,11,12},
        {13,14,15}
    };
    
    const size_t size=sizeof (a)/sizeof (int);
    
    size_t i;
    
    for (i=0;i!=size;++i)
        printf("%-4d",(*a)[i]);        
    puts("");
    
    for (i=0;i!=size;++i)
        printf("%-4d",*( int* )(( char* )a+i*sizeof ( int )));
    puts("");
    
    return 0;
}

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2018-07-05 21:12
快速回复:按址寻值,自我标记一下
数据加载中...
 
   



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

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