我在Ubuntu终端上尝试了代码
int main() {
int y = 10;
int *int_ptr;
int_ptr = (int *) y;
}
我已经在程序中分配了这些代码。我想通过解释步骤来了解上面代码的正确实现。在最后一行代码中,如果它是int_ptr =& y; 我没有问题但是使用我的代码我没有得到指针int_ptr指向的东西。
答案 0 :(得分:4)
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav">
<div class="dropdown">
<button class="dropbtn">@Html.Partial("CategoryLayout")</button>
<div class="dropdown-content">
<a href="#">Link 1</a>
<a href="#">Link 2</a>
<a href="#">Link 3</a>
</div>
</div>
</ul>
}
int *int_ptr;
用于存储int_ptr
类型变量的地址。
要获取变量地址int
,您需要使用&amp;运营商。
但是通过执行上面所做的操作,您只需将整数10分配给int t
。
当您声明变量时说
int_ptr
有两件事在起作用:
要通过指针访问int x = 34;
,您需要第一个值。
答案 1 :(得分:0)
使用最后一行,为int_ptr分配地址0x0000000A。 所以使用* int_ptr,你正在读取存储在0x0000000A的存储器。
答案 2 :(得分:0)
发布的代码中存在错误,但投射(int *)
正在屏蔽它。
您应该使用y
的地址使int_ptr
指向 y
:
int main(void) {
int y = 10;
int *int_ptr;
int_ptr = &y;
}
使用强制转换,您告诉编译器您知道自己在做什么,并且确实希望将y
的值转换为某些int
的地址存入int_ptr
。如果没有强制转换,编译器应发出警告,告诉您可能的编程错误。