qq_43396784 2021-07-22 19:17 采纳率: 60%
浏览 27
已采纳

C语言指针的一些问题

今天遇到一个奇怪的事,为什么下面这段代码在Windows的Devc++中编译不用过,报错误,而在Ubuntu上就能编译通过,只报了两个警告,并且a,b的值还交换成功了, t = *p 不应该是不合法格式吗?


#include <stdio.h>

void swap(int *p, int *q) 
{
    int *t; 
    t = *p; 
    *p = *q; 
    *q = t;
}

int main(int argc, const char  *argv[])
{
    
    int a = 1;
    int b = 2;

    swap(&a, &b);                                                      
    printf("a = %d, b = %d\n", a, b); 

    return 0;
}

Windows的Devc++报错内容:

img

Ubuntu的编译运行结果:

img

  • 写回答

5条回答 默认 最新

  • 快乐鹦鹉 2021-07-22 19:21
    关注

    说到底,指针就是个整型值,只是代表不同的含义。非得将整型值赋值给指针,从值类型上是可以的,就砍编译器怎么考虑了
    比如一个整型0x003DF597,可能就是一个内存地址值。如果 int *p = 0x003DF597,有些编译器是不同意的,需要 int p = (int)0x003DF597才可以。但这并非标准规范的

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

问题事件

  • 已采纳回答 7月22日
  • 创建了问题 7月22日

悬赏问题

  • ¥15 IAR程序莫名变量多重定义
  • ¥15 (标签-UDP|关键词-client)
  • ¥15 关于库卡officelite无法与虚拟机通讯的问题
  • ¥100 已有python代码,要求做成可执行程序,程序设计内容不多
  • ¥15 目标检测项目无法读取视频
  • ¥15 GEO datasets中基因芯片数据仅仅提供了normalized signal如何进行差异分析
  • ¥100 求采集电商背景音乐的方法
  • ¥15 数学建模竞赛求指导帮助
  • ¥15 STM32控制MAX7219问题求解答
  • ¥20 在本地部署CHATRWKV时遇到了AttributeError: 'str' object has no attribute 'requires_grad'