C中指针的概念尚不清楚

时间:2017-07-17 10:37:21

标签: c unix

我在Ubuntu终端上尝试了代码

int main() {
    int y = 10;
    int *int_ptr;
    int_ptr = (int *) y;
}

我已经在程序中分配了这些代码。我想通过解释步骤来了解上面代码的正确实现。在最后一行代码中,如果它是int_ptr =& y; 我没有问题但是使用我的代码我没有得到指针int_ptr指向的东西。

3 个答案:

答案 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

有两件事在起作用:

  • 说0x10000是存储x的地址;这个地址是用&amp;获得的。操作者。
  • 和34,它是x的值。

要通过指针访问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。如果没有强制转换,编译器应发出警告,告诉您可能的编程错误。