| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 644 人关注过本帖
标题:谁能解释一下这个关于强制转型的问题~
只看楼主 加入收藏
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
结帖率:99.25%
收藏
已结贴  问题点数:20 回复次数:4 
谁能解释一下这个关于强制转型的问题~
下面程序的运行结果是怎么回事~有谁能解释一下~
程序代码:
#include <stdio.h>
int main ()
{
    void* k=NULL;

    printf("%d %d\n",(int* )k+1,(int** )k+1);
    printf("%d %d\n",(float* )k+1,(float** )k+1);
    printf("%d %d\n",(double* )k+1,(double** )k+1);
    printf("%d %d\n",(char* )k+1,(char** )k+1);

    return 0;
}


图片附件: 游客没有浏览图片的权限,请 登录注册


[此贴子已经被作者于2017-2-21 09:38编辑过]

2017-02-21 09:35
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:20 
解释什么?
TYPE* p;
p 和 p+1 相隔 sizeof(TYPE) 字节。

比如 (double*)k+1
此时 TYPE 是 double,所以相隔 sizeof(double) 个字节,也就是 8

比如 (double**)k+1
此时 TYPE 是 double*,所以相隔 sizeof(double*) 个字节,也就是 4
2017-02-21 09:51
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
回复 2楼 rjsp
已经明白了~多谢解答~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-02-21 09:56
qdcs
Rank: 6Rank: 6
等 级:侠之大者
威 望:5
帖 子:171
专家分:458
注 册:2016-12-22
收藏
得分:0 
这样也可以
程序代码:
#include <stdio.h>
int main ()
{
    void* k=NULL;

    printf("%d %d\n",(int* )k+1,(int** )k+1);
  

    (int*)k;
    printf("%d %d\n",k,(char** )k+1);

 

    return 0;
}


我是硬件工程师
2017-02-21 20:20
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
指针“大小”属性的体现,即k地址每个数据块的大小。
2017-02-22 08:37
快速回复:谁能解释一下这个关于强制转型的问题~
数据加载中...
 
   



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

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