注册 登录
编程论坛 C语言论坛

来找错啊!!

lulalulalulu 发布于 2021-10-31 19:26, 1571 次点击
    int b = 3;
    int *result = b;
    int t = result;
    printf("%d\n",t);
//我的指针是指向b的,那么result应该存储的是b的地址。
//为什么最后的输出语句,输出是3?

   
4 回复
#2
自由而无用2021-10-31 19:39
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
#3
apull2021-10-31 20:23
int *result = b;
分开就是
int *result;
result = b;
指针指向的地址是3.
要用&获取变量的地址。
result = &b;
#4
Ycx07212021-11-01 19:08
#include"stdio.h"
int main()
{
    int b = 3;
    int *result = &b;
    int t = result;
    printf("%d\n", t);

}
为啥我每次运行的结果都不一样(指针还没学,不太懂)
#5
apull2021-11-02 16:26
int t = result; t和result的值是result所指的地址,也就是b的地址,b的内存地址是随机分配的。
获取指针所指的值要用*
int t = *result;
#6
Ycx07212021-11-02 19:03
回复 5楼 apull
感谢
1