首页 > 解决方案 > 当我们改变指针的内容时,指针指向哪里?

问题描述

例如,当我们声明指针时

字符 *p;

然后我们做

*p = 'a';

那么p的值是多少

我的意思是p点在哪里?

它是否在某个任意内存位置写入“a”,然后指针即p指向该内存位置?

PS - 提前抱歉,因为我的英语达不到那个分数。欢迎编辑:)

标签: c

解决方案


我建议您在这里查看这篇文章,以便更好地理解指针的概念。

我将使用 int 深入研究第一个示例:

我们有

int foo;

然后我们声明

int *foo_ptr = &foo;

这就像你char上面的例子一样。

foo_ptr被声明为指向 int 的指针。我们已经将它初始化为指向 foo ..

现在,把每个变量想象成一个盒子。foo 是一个大小为 sizeof(int) 字节的框。这个盒子的位置就是它的地址。当您访问地址时,您实际上访问了它所指向的框的内容。

当您声明:

char *p;

接着:

*p = 'a';

你不指向地址,*p是内存中定义的点,意味着静态分配,它是内存的只读部分。由于上述原因,任何更改尝试都*p将导致未定义的行为。


推荐阅读