编程论坛
注册
登录
编程论坛
→
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
apull
2021-10-31 20:23
int *result = b;
分开就是
int *result;
result = b;
指针指向的地址是3.
要用&获取变量的地址。
result = &b;
#4
Ycx0721
2021-11-01 19:08
#include"stdio.h"
int main()
{
int b = 3;
int *result = &b;
int t = result;
printf("%d\n", t);
}
为啥我每次运行的结果都不一样(指针还没学,不太懂)
#5
apull
2021-11-02 16:26
int t = result; t和result的值是result所指的地址,也就是b的地址,b的内存地址是随机分配的。
获取指针所指的值要用*
int t = *result;
#6
Ycx0721
2021-11-02 19:03
回复 5楼 apull
感谢
1