JINGZMR 2022-10-18 22:30 采纳率: 63.6%
浏览 17
已结题

对int *a=(int*)3的理解

想请问一下大家这两个程序是怎么进行赋值和运行的,为什么结果相差这么多


int *a=(int*)3;

对上面的这一步完全不理解

#include<stdio.h>
int main(void)
{
    int *a=(int*)3;
    printf("%d",a);    
    
    return 0;
}

这个的输出结果是3

#include<stdio.h>
int main(void)
{
    int *a=(int*)3;
    printf("%d",a+1);    
    
    return 0;
}

而这个的输出是7

  • 写回答

2条回答 默认 最新

  • 蓝天居士 《人工智能从入门到进阶实战》作者 2022-10-19 00:19
    关注
    1. a是一个指针,指向了3这个地址,打印a的值实际上是打印的a指向的地址的值,所以是3;
    2. a被强制转换为int类型的指针,在32位系统上整型占4个字节,所以a+1,相当于增加了一个整型的长度,是4个字节,因此3+4=7。如果是在64位系统上,值应该是11。
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 10月31日
  • 已采纳回答 10月23日
  • 修改了问题 10月18日
  • 创建了问题 10月18日

悬赏问题

  • ¥15 MATLAB解决问题
  • ¥20 哪位专业人士知道这是什么原件吗?哪里可以买到?
  • ¥15 关于#c##的问题:treenode反序列化后获取不到上一节点和下一节点,Fullpath和Handle报错
  • ¥15 一部手机能否同时用不同的app进入不同的直播间?
  • ¥15 没输出运行不了什么问题
  • ¥20 输入import torch显示Intel MKL FATAL ERROR,系统驱动1%,: Cannot load mkl_intel_thread.dll.
  • ¥15 点云密度大则包围盒小
  • ¥15 nginx使用nfs进行服务器的数据共享
  • ¥15 C#i编程中so-ir-192编码的字符集转码UTF8问题
  • ¥15 51嵌入式入门按键小项目