【问题标题】:Where the Pointer variables are stored and how compiler access normal variable? [closed]指针变量的存储位置以及编译器如何访问普通变量? [关闭]
【发布时间】:2017-05-04 05:19:46
【问题描述】:

我对指针变量的存储位置有点困惑,谁能帮帮我。

int *ptr; //where this pointer stored
int p; //how compiler can access this variable(using address or what?)

指针是通过地址访问的,普通变量呢...?

请推荐我最好的网站来学习 C...

【问题讨论】:

  • 简而言之,指针是一个普通变量,它保存指向其他东西的地址作为其值,而变量是一个指向内存地址的标签,它保存直接值。您取消引用指针以获取指针所持有地址处的直接值。
  • 我投票决定将此问题作为离题结束,因为在此处以及任何 C 手册或教程中都可以轻松找到所请求信息的范围。
  • 这取决于您的系统。该标准没有指定此类内容。
  • 要理解这一点,如果你还没有学习基本的汇编编程,请将你的程序编译为gcc -Wall -save-temps src.c -o src,并在文件src.s中亲自查看

标签: c


【解决方案1】:
  1. 这个指针存储在哪里?

指针与内存中的任何其他普通变量一样存储。具体在哪里取决于它是局部变量,在这种情况下它存储在堆栈中,或者是全局变量或静态变量,在这种情况下它存储在全局变量的单独内存部分中。

  1. 编译器如何访问这个变量?

这里不知道编译器访问是什么意思,但是作为程序员,你可以直接访问变量,你可以将地址存储在指针中,然后间接访问。

a = p; //Direct access

int *ptr;
ptr = &p;
a = *ptr;   // Access the variable indirectly.

关于你推荐网站的第三个问题,不在StackOverflow的范围内。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-03
    • 2013-03-16
    相关资源
    最近更新 更多