Catherine_bling 2021-01-19 15:34 采纳率: 0%
浏览 60

为什么在函数调用输出时printf里面a*和a都可以得到正确答案,这里输出a不是地址吗

void cmp(int* a,int* b,int* c){
    if(*a>*b){
        if(*b>*c)
            printf("%d %d %d\n",*a,*b,*c);//疑问的地方在这个语句中
        else{
            if(*a>*c){
               printf("%d %d %d\n",*a,*c,*b);
            }
            else{
                printf("%d %d %d\n",*c,*a,*b);
            }
        }
    }
    else{
        if(*a>*c)
            printf("%d %d %d\n",*b,*a,*c);
        else{
            if(*b>*c){
                printf("%d %d %d\n",*b,*c,*a);
            }
            else{
                printf("%d %d %d\n",*c,*b,*a);
            }
        }
    }
}
int main(){
    int a,b,c;
    scanf("%d%d%d",&a,&b,&c);
    int* p1=&a;
    int* p2=&b;
    int* p3=&c;
    cmp(p1,p2,p3);
    return 0;
}
  • 写回答

4条回答 默认 最新

  • zhaohuaxishiwzw 2021-01-19 16:06
    关注

    c/c++中,*a是a的值所指向的地址中存储的值。

    比如a = 200;

    那么*a是200这个地址中所存储的值。

    扩展一点,&a则是指a所在的地址的值,大概如下:

    内存

    地址     值

    150       200    #a变量 所在的位置

    200      300

    那么对于上述内存地址及地址中存储的值来说,

    a变量的值是200

    &a是150 ,即a所在的地址的值

    *a是300,即a变量值所指向的地址中存储的值

     

    评论

报告相同问题?

悬赏问题

  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘