标题:来找错啊!!
只看楼主
lulalulalulu
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2021-10-31
结帖率:0
已结贴  问题点数:20 回复次数:4 
来找错啊!!
    int b = 3;
    int *result = b;
    int t = result;
    printf("%d\n",t);
//我的指针是指向b的,那么result应该存储的是b的地址。
//为什么最后的输出语句,输出是3?

   
搜索更多相关主题的帖子: int 输出 地址 语句 result 
2021-10-31 19:26
自由而无用
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:14
帖 子:61
专家分:1456
注 册:2021-8-9
得分:7 
int *result = &b;
//online parser: https://www.bccn.net/run/
程序代码:
#include <stdio.h>

int main(int argc, char *argv[])
{
    
    int b = 3;
    int *result = &b;
    long int t = (long int)result;
    
    printf("addr_b = %p\n", &b);
    printf("result = %p\n", result);
    printf("t = 0x%lx\n", t);
    printf("*t = %d", ((int *)t)[0]);
    
    return 0;
}


output sample:

addr_b = 0x7ffe14fe0184
result = 0x7ffe14fe0184
t = 0x7ffe14fe0184
*t = 3
2021-10-31 19:39
apull
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:三体星系
等 级:版主
威 望:185
帖 子:1404
专家分:8479
注 册:2010-3-16
得分:7 
int *result = b;
分开就是
int *result;
result = b;
指针指向的地址是3.
要用&获取变量的地址。
result = &b;
2021-10-31 20:23
Ycx0721
Rank: 1
等 级:新手上路
帖 子:28
专家分:7
注 册:2021-10-15
得分:7 
#include"stdio.h"
int main()
{
    int b = 3;
    int *result = &b;
    int t = result;
    printf("%d\n", t);

}
为啥我每次运行的结果都不一样(指针还没学,不太懂)
2021-11-01 19:08
apull
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:三体星系
等 级:版主
威 望:185
帖 子:1404
专家分:8479
注 册:2010-3-16
得分:0 
int t = result; t和result的值是result所指的地址,也就是b的地址,b的内存地址是随机分配的。
获取指针所指的值要用*
int t = *result;
2021-11-02 16:26
Ycx0721
Rank: 1
等 级:新手上路
帖 子:28
专家分:7
注 册:2021-10-15
得分:0 
回复 5楼 apull
感谢
2021-11-02 19:03



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-507350-1-1.html




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

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