小编use*_*013的帖子

何时在指针赋值中使用 *?

因为我在学习 CI 时经常看到指针。

我知道一个指针保存了内存中不同位置的十六进制值。所以指针就是例如:0x7fff5fbff85c

每个指针也是不同的类型。

int var = 10;
int *ptr = &var;
Run Code Online (Sandbox Code Playgroud)

这里的ptr指向var的位置。要获得 var 的值,我必须使用*ptr. 喜欢

printf("Var = %d", *ptr);
Run Code Online (Sandbox Code Playgroud)

将打印 `Var = 10;

但是,如果我对指针进行非内联声明,例如:

int var = 10;
int *ptr;
ptr = &var;
Run Code Online (Sandbox Code Playgroud)

*当我实际将内存地址分配给指针时,我不必在第三行中使用。但是当我得到一个带指针的函数时:

int var = 10;
void assignPointer(int *ptr) {
*ptr = 10;
}
Run Code Online (Sandbox Code Playgroud)

等一下!在我写这篇文章时,我意识到指针有两种不同的分配:

*ptr = 10;
Run Code Online (Sandbox Code Playgroud)

ptr = &var;
Run Code Online (Sandbox Code Playgroud)

有什么不同?在第一种情况下,我是否首先取消引用指针,将 10 分配给其持有的位置?在第二种情况下,我将实际位置分配给指针。

我有点困惑何时使用 * 何时不使用赋值。

如果我正在处理数组,为什么我需要指针呢?

int array[];
Run Code Online (Sandbox Code Playgroud)

这里的“array”已经保存了十六进制内存位置。这不使它成为一个指针吗?所以如果我想为数组分配一些东西,我不会写:

*array = [10, 2];
Run Code Online (Sandbox Code Playgroud)

首先我取消引用,然后我分配。

我迷路了 :(

编辑:也许有点不清楚。我不知道当你使用指针时什么时候必须使用 * 什么时候不用。携带十六进制的所有内容都是指针,对吗?数组的变量名携带它的十六进制内存位置。那么为什么它不是一个指针呢? …

c memory arrays variables pointers

-1
推荐指数
1
解决办法
9327
查看次数

标签 统计

arrays ×1

c ×1

memory ×1

pointers ×1

variables ×1