C 变量和指针

标签 c pointers

<分区>

引用https://stackoverflow.com/a/22250138/5783540它说:

当你有

int a = 10;

你也是

&a

原来是:int*

但为什么是指针?我知道 &a 会给你一个内存地址,但它没有地址而是一个数字 10 还是我错了?

请阅读: 我知道指针是什么,我知道 & 实际上做了什么。我只是感到困惑:

To get the address of a, you do: &a (address of a) which returns an int* (pointer to int)

同样,为什么 int a 应该是一个指针?

编辑: 多谢你们。我读错了。指针背后没有隐藏的魔法。只是我的阅读不好...

最佳答案

指针是存储地址的变量。 例如当 int a = 10; int *b = &a; 这里 b 是一个指针 存储一个地址,10 存储的地址&a 表示某物的地址。 比如10存放在地址1234567,而这个地址存放在b,为什么?因为&指针也是一个变量并且其中存储了一些东西(一些地址)所以我们可以有另一个指向它的指针(存储它的地址)。 那么为什么是 int*:

1-因为值存储在内存中,我们应该知道从中读取了多少字节以及如何读取它(int ,float,...)。

2-当你想递增指针时,它应该知道去哪里(要跳转多少字节)。它无法从 int 值的中间读取!。所以它应该从那个值跳转到下一个值。

关于C 变量和指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34832336/

相关文章:

c - 字典顺序与数字顺序

c - 为什么 nm 隐藏 .o 文件中的 .rela.eh_frame 和 .rela.text ?

c - 如何在 Linux/C 中将历史日期和时间转换为另一个时区?

c - 如何在c中的字符数组中用strtok划分单词

c - 写入一些信息后如何清理数组

C、设计: removing global objects

c - C语言中的 'volatile'关键字

c++ - 基类和派生类之间的不同调试器指针地址

c++ - 下面代码中指针的使用

c - c中带有char指针的二维数组