指向指针的指针与普通指针

2024-05-13

指针的作用是保存特定变量的地址。那么下面代码的内存结构应该是这样的:

int a = 5;
int *b = &a;

……内存地址……值
一个... 0x000002 ................... 5
b ... 0x000010 ................... 0x000002

好的。那么假设现在我要保存指针*b的地址。那么我们一般定义一个双指针**c,为

int a = 5;
int *b = &a;
int **c = &b;

那么内存结构如下:

……内存地址……值
一个... 0x000002 ................... 5
b ... 0x000010 ................... 0x000002
c ... 0x000020 ................... 0x000010

所以**c指的是*b的地址。

现在我的问题是,为什么这种类型的代码,

int a = 5;
int *b = &a;
int *c = &b;

生成警告?

如果指针的目的只是保存内存地址,我认为如果我们要保存的地址引用变量、指针、双指针等,那么我认为应该没有层次结构,所以下面类型的代码应该是有效的。

int a = 5;
int *b = &a;
int *c = &b;
int *d = &c;
int *e = &d;
int *f = &e;

In

int a = 5;
int *b = &a;   
int *c = &b;

您收到警告是因为&b属于类型int **,并且您尝试初始化类型的变量int *。这两种类型之间没有隐式转换,从而导致警告。

举一个你想要工作的更长的例子,如果我们尝试取消引用f编译器会给我们一个int,不是我们可以进一步取消引用的指针。

另请注意,在许多系统上int and int*大小不同(例如,指针可能是 64 位长,而指针可能是 64 位长)int32 位长)。如果您取消引用f并得到一个int,您会丢失一半的值,然后您甚至无法将其转换为有效的指针。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

指向指针的指针与普通指针 的相关文章

随机推荐

  • Fluentd 启动服务器时出现错误:日志文件不可写

    这是我的 td agent conf 文件
  • 如何使用 WHERE x IN 子句编写PreparedStatement 的SQL?

    我有一个如下所示的查询 SELECT last name first name middle initial FROM names WHERE last name IN smith jones brown 我需要能够对 IN 子句中的列表进
  • android webview:防止文本选择actionMode actionBar

    我想保留 webView 中的文本选择 同时防止显示 actioMode 的任何上下文菜单 既不是新的浮动栏 也不是旧的 actionBar 只有选择手柄 当然还有选择行为 通过挂钩 startAction 模式中的 actionMode
  • Jquery Mobile Web:可以调用本机应用程序吗?

    我希望能够触摸移动网页上的链接并让它启动本机移动应用程序 例如 Skype 这似乎是一个巨大的安全问题 但我想知道移动环境是否允许这样做 编辑 是的 有用 对 document window myapp myparam 的 javascri
  • 将 lambda 表达式传递给 lambda 参数 c++11

    我想做这样的事情 int main auto f some variables take lambda function something with lambda function f other variables variables
  • 从模板类创建对象时出错

    我一直在尝试找到一种方法 从 C 中的多元正态分布中采样随机向量 同时具有均值向量和协方差矩阵 就像 Matlab 的那样mvnrnd功能有效 我找到了实现此功能的类的相关代码这一页 http lost found wandering bl
  • Xcode“使用性能工具运行”被禁用?

    我正在尝试从我的 Xcode 项目中查找内存泄漏 我不知道发生了什么 我无法选择任何内容Run gt Run with performance tool 事物列表被禁用 请帮助我 我是初学者 问题是我已经删除了构建文件夹并尝试使用性能工具运
  • Scala 宏的位置怎么了?

    我试图获取宏参数的原始输入字符串 但返回的位置似乎有点偏离 考虑这个宏 例如 object M import scala reflect macros Context import language experimental macros
  • 无法在 python 中导入名称 GoogleMaps

    我使用下面的代码来获取地址的纬度和经度 from googlemaps import GoogleMaps gmaps GoogleMaps api key address Constitution Ave NW 10th St NW Wa
  • ASP.NET MVC4 CustomErrors DefaultRedirect 被忽略

    我有一个 MVC 4 应用程序 使用自定义 HandleErrorAttribute 仅处理自定义异常 我想拦截默认的 404 和其他非 500 错误页面 并用更有吸引力的内容替换它们 为此 我将以下内容添加到我的 Web config 中
  • Chrome 中的 net::ERR_INSECURE_RESPONSE

    从 API 获取一些数据时 我在 Chrome 控制台中收到错误 net ERR INSECURE RESPONSE 此错误通常是由于未签名的证书造成的 但是 这不是问题 因为我有有效且签名的证书 该错误根本不会经常发生 如果我重新启动 C
  • .NET 4.7.1 中的 ASP.NET MVC 5 razor 视图中参考 netstandard 2.0 类型

    NET 4 7 1 应该解决我们在引用时遇到的问题netstandard 2 0完整框架中的库 尽管存在一些持续且令人痛苦的 dll 冲突警告和相关问题 并且需要手动更新到 PackageReferences 看看这个精彩的扩展 https
  • jquery ui 选项卡不再支持 cookie?怎么办?

    我很抱歉这是一个开放式问题 但我很茫然 从 jquery UI 1 9 版本开始 它们使用cookie选项以保存跨多个页面的选项卡的活动状态 http jqueryui com upgrade guide 1 9 deprecated co
  • 我们在哪里/什么时候使用 JSON?

    你能告诉我 JSON 有什么用 在 Javascript 和 PHP 中 当我们需要 JSON 方法时 我从以下链接中阅读 但是 我没有获得有关任何项目的 JSON 实现的任何信息 http www json org js html htt
  • 是否可以从新的 instagram-graph-api 检索关注者列表?

    是否可以从新的 Instagram 图形 API 检索 Instagram 关注者列表 发现 Instagram API 已被弃用 您知道另一种检索 Instagram 关注者的方法吗 不再有 API 可以获取 Instagram 的关注者
  • FOREACH返回的对象顺序稳定吗?

    是否可以安全地假设对同一集合的两次迭代将以相同的顺序返回对象 显然 假设集合没有被更改 这取决于集合类型 对于大多数集合来说 答案是 是 然而 这并不能得到保证 集合类型的文档应该指定它是否这样做 但正如大多数人所做的那样 该细节通常被忽视
  • 无法再转换为 LayerDrawable(升级 v7 后)

    我正在使用支持库的最新版本 22 1 1 我曾经这样去 mRatingBar RatingBar getActivity findViewById R id rating LayerDrawable layer LayerDrawable
  • PHP 论坛软件可以轻松与现有网站集成吗? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我有一个现有的 php 网站 已经设置了用户系统 注册 身份验证 丢失密码等 我决定添加一个留言板并将其与现有网站集成 在一个网站上注册应
  • 框架可以用什么代替?

    假设我有一个包含 50 个网页的网站 每个页面由 A Header 导航 左侧内容 右侧内容 Footer 不使用 Frames 服务器端编程 第三方工具和软件 构架 我需要将这 5 个部分的代码 HTML 标记 分别放入这 50 个页面中
  • 指向指针的指针与普通指针

    指针的作用是保存特定变量的地址 那么下面代码的内存结构应该是这样的 int a 5 int b a 内存地址 值一个 0x000002 5b 0x000010 0x000002 好的 那么假设现在我要保存指针 b的地址 那么我们一般定义一个