c - 当我们改变指针的内容时,指针指向哪里?
问题描述
例如,当我们声明指针时
字符 *p;
然后我们做
*p = 'a';
那么p的值是多少
我的意思是p点在哪里?
它是否在某个任意内存位置写入“a”,然后指针即p指向该内存位置?
PS - 提前抱歉,因为我的英语达不到那个分数。欢迎编辑:)
解决方案
我建议您在这里查看这篇文章,以便更好地理解指针的概念。
我将使用 int 深入研究第一个示例:
我们有
int foo;
然后我们声明
int *foo_ptr = &foo;
这就像你char
上面的例子一样。
foo_ptr
被声明为指向 int 的指针。我们已经将它初始化为指向 foo ..
现在,把每个变量想象成一个盒子。foo 是一个大小为 sizeof(int) 字节的框。这个盒子的位置就是它的地址。当您访问地址时,您实际上访问了它所指向的框的内容。
当您声明:
char *p;
接着:
*p = 'a';
你不指向地址,*p
是内存中定义的点,意味着静态分配,它是内存的只读部分。由于上述原因,任何更改尝试都*p
将导致未定义的行为。
推荐阅读
- google-cloud-platform - 将 VPN 隧道从项目 A 移动到项目 B - GCP
- pagerduty - 如何在团队之间移动服务?
- c - 如果我不在函数范围内,建议不会弹出
- javascript - 使用 .map() 在对象 React 中迭代数组
- go - 在golang中解释make的幕后?
- flutter - 在列表中添加或删除项目时,列表构建器重复数据的问题
- php - 将数组转换为 int php
- ios - Ionic Capacitor 无法再生成可构建的 iOS 项目,CompileAssetCatalog 错误
- java - 从谷歌地图中的共享位置获取长/纬度到您的应用程序
- r - 在 tidyverse 中将列拆分为日期/时间