等式中每个变量的伪代码转换是什么,“* x_ptr =& x”?

时间:2014-03-22 22:10:21

标签: c variables pointers syntax pseudocode

我是编程语言C的初学者。我正在使用示例代码在线工作,我正在尝试分析以下内容,

int x = 0, y = 16;
*x_ptr = &x

这是我想要确保我在语法上理解的第二行。我刚刚遇到了指针的概念,并试图在概念上破解那个坚果。那么我该如何阅读第2行的代码?

2 个答案:

答案 0 :(得分:5)

您发布的代码不包含x_ptr声明,但为了使代码有效,x_ptr的类型必须为int**:指向指向的代码一个整数。

表达式*x_ptr表示x_ptr指向的内容。由于x_ptr是指向整数的指针,*x_ptr是指向整数的指针。

由于x是整数变量,&x是该变量的地址。所以赋值正在做的是获取变量x的地址并将其存储到x_ptr指向的内存中。

答案 1 :(得分:2)

变量是存储位置。

存储位置存储值。

存储位置与类型相关联。

类型T的存储位置包含类型T的值。

存储位置不是值。

使用存储位置生成值会产生存储在存储位置的值。

&运算符应用于类型T的存储位置会产生一个值。值的类型是"指向类型T"。

的指针

*运算符应用于类型&#34的值;指向类型T&#34的指针;生成类型为T的存储位置。

根据这些事实,您可以推断出程序片段的含义。

然而,您给出的程序片段几乎肯定是一个错字。你的意思是说

int x = 0, *x_ptr = &x;

让我们以更长的形式写出来,以便于阅读。

int x;
int *x_ptr;
x = 0;
x_ptr = &x;

xx_ptr是存储位置。第一个是int类型,第二个是指向int的类型指针。

零值被分配到位置x

&运算符应用于存储位置x,生成指向int的类型指针值。

该值已分配到存储位置x_ptr

如果你那么说

*x_ptr = 123;

然后*获取存储在位置x_ptr中的值并将指针转回存储位置 - x - 然后将123存储到该存储位置。 x现在是123,而不是0

确保您拥有 solid 。这是了解所有C的关键。