指针数组的大小

2024-02-28

我对 sizeof 运算符有疑问

Code 1:

int main()
{
    int p[10];
    printf("%d",sizeof(p));   //output -- 40
    return 0;
}

Code 2:

int main()
{
    int *p[10];
    printf("%d",sizeof(*p));   //output -- 4
    return 0;
}

在第一个代码中,p 指向一个整数数组。 在第二个代码中,p 指向一个指针数组。 我无法理解为什么第一个代码 o/p 是 40 但第二个代码 o/p 是 4 认为两者都指向相同大小的数组?


以下程序的输出将为您提供有关类型的大小和类型指针的一些提示和理解。

#include <stdio.h>

int main(void)
{
    int p1[10];
    int *p2[10];
    int (*p3)[10];

    printf("sizeof(int)   = %d\n", (int)sizeof(int));
    printf("sizeof(int *) = %d\n", (int)sizeof(int *));
    printf("sizeof(p1)    = %d\n", (int)sizeof(p1));
    printf("sizeof(p2)    = %d\n", (int)sizeof(p2));
    printf("sizeof(p3)    = %d\n", (int)sizeof(p3));

    return 0;
}

int p[10];      => 10 consecutive memory blocks (each can store data of type int) are allocated and named as p

int *p[10];     => 10 consecutive memory blocks (each can store data of type int *) are allocated and named as p

int (*p)[10];   => p is a pointer to an array of 10 consecutive memory blocks (each can store data of type int) 

现在回答你的问题:

>> in the first code p points to an array of ints.
>> in the second code p points to an array of pointers.

你是对的。代码中:2、要获取p指向的数组大小,需要传入基地址

printf("%d", (int)sizeof(p));

而不是以下内容

printf("%d", (int)sizeof(*p));   //output -- 4

以下是等效的:

*p, *(p+0), *(0+p), p[0]

>> what's the difference between p[10] and 
>> (*p)[10]...they appear same to me...plz explain

以下是您的另一个问题的回答:

int p[10];
 _________________________________________
|   0   |   1   |   2   |         |   9   |
| (int) | (int) | (int) |  ...    | (int) |
|_______|_______|_______|_________|_______|


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

指针数组的大小 的相关文章

  • 为什么 C# Array.BinarySearch 这么快?

    我已经实施了一个很简单用于在整数数组中查找整数的 C 中的 binarySearch 实现 二分查找 static int binarySearch int arr int i int low 0 high arr Length 1 mid
  • 查找c中结构元素的偏移量

    struct a struct b int i float j x struct c int k float l y z 谁能解释一下如何找到偏移量int k这样我们就可以找到地址int i Use offsetof 找到从开始处的偏移量z
  • 类模板参数推导 - clang 和 gcc 不同

    下面的代码使用 gcc 编译 但不使用 clang 编译 https godbolt org z ttqGuL template
  • OleDbDataAdapter 未填充所有行

    嘿 我正在使用 DataAdapter 读取 Excel 文件并用该数据填充数据表 这是我的查询和连接字符串 private string Query SELECT FROM Sheet1 private string ConnectStr
  • Clang 3.1 + libc++ 编译错误

    我已经构建并安装了 在前缀下 alt LLVM Clang trunk 2012 年 4 月 23 日 在 Ubuntu 12 04 上成功使用 GCC 4 6 然后使用此 Clang 构建的 libc 当我想使用它时我必须同时提供 lc
  • C# 中通过 Process.Kill() 终止的进程的退出代码

    如果在我的 C 应用程序中 我正在创建一个可以正常终止或开始行为异常的子进程 在这种情况下 我通过调用 Process Kill 来终止它 但是 我想知道该进程是否已退出通常情况下 我知道我可以获得终止进程的错误代码 但是正常的退出代码是什
  • 使用 WebClient 时出现 System.Net.WebException:无法创建 SSL/TLS 安全通道

    当我执行以下代码时 System Net ServicePointManager ServerCertificateValidationCallback sender certificate chain errors gt return t
  • WCF 中 SOAP 消息的数字签名

    我在 4 0 中有一个 WCF 服务 我需要向 SOAP 响应添加数字签名 我不太确定实际上应该如何完成 我相信响应应该类似于下面的链接中显示的内容 https spaces internet2 edu display ISWG Signe
  • 显示UnityWebRequest的进度

    我正在尝试使用下载 assetbundle统一网络请求 https docs unity3d com ScriptReference Networking UnityWebRequest GetAssetBundle html并显示进度 根
  • while 循环中的 scanf

    在这段代码中 scanf只工作一次 我究竟做错了什么 include
  • 如何在 C 中调用采用匿名结构的函数?

    如何在 C 中调用采用匿名结构的函数 比如这个函数 void func struct int x p printf i n p x 当提供原型的函数声明在范围内时 调用该函数的参数必须具有与原型中声明的类型兼容的类型 其中 兼容 具有标准定
  • 使用 x509 证书签署 json 文档或字符串

    如何使用 x509 证书签署 json 文档或字符串 public static void fund string filePath C Users VIKAS Desktop Data xml Read the file XmlDocum
  • Windows 窗体:如果文本太长,请添加新行到标签

    我正在使用 C 有时 从网络服务返回的文本 我在标签中显示 太长 并且会在表单边缘被截断 如果标签不适合表单 是否有一种简单的方法可以在标签中添加换行符 Thanks 如果您将标签设置为autosize 它会随着您输入的任何文本自动增长 为
  • cmake 将标头包含到每个源文件中

    其实我有一个简单的问题 但找不到答案 也许你可以给我指一个副本 所以 问题是 是否可以告诉 cmake 指示编译器在每个源文件的开头自动包含一些头文件 这样就不需要放置 include foo h 了 谢谢 CMake 没有针对此特定用例的
  • 在 Javascript 中连接空数组

    我正在浏览一些代码 我想知道这有什么用处 grid push concat row 根据我的理解 它等同于 grid push row 为什么要大惊小怪 连接 你想使用 concat当您需要展平数组并且没有由其他数组组成的数组时 例如 va
  • 如何在Xamarin中删除ViewTreeObserver?

    假设我需要获取并设置视图的高度 在 Android 中 众所周知 只有在绘制视图之后才能获取视图高度 如果您使用 Java 有很多答案 最著名的方法之一如下 取自这个答案 https stackoverflow com a 24035591
  • 基于 OpenCV 边缘的物体检测 C++

    我有一个应用程序 我必须检测场景中某些项目的存在 这些项目可以旋转并稍微缩放 更大或更小 我尝试过使用关键点检测器 但它们不够快且不够准确 因此 我决定首先使用 Canny 或更快的边缘检测算法 检测模板和搜索区域中的边缘 然后匹配边缘以查
  • IEnumreable 动态和 lambda

    我想在 a 上使用 lambda 表达式IEnumerable
  • 如何将服务器服务连接到 Dynamics Online

    我正在修改内部管理应用程序以连接到我们的在线托管 Dynamics 2016 实例 根据一些在线教程 我一直在使用OrganizationServiceProxy out of Microsoft Xrm Sdk Client来自 SDK
  • C# - OutOfMemoryException 在 JSON 文件上保存列表

    我正在尝试保存压力图的流数据 基本上我有一个压力矩阵定义为 double pressureMatrix new double e Data GetLength 0 e Data GetLength 1 基本上 我得到了其中之一pressur

随机推荐

  • MySQL 匹配 - 在布尔模式下?

    我正在使用 PDO 执行 MATCH AGAINST 查询 以下内容不返回任何内容 SELECT title author isbn MATCH title isbn AGAINST term AS score FROM books WHE
  • 将txt转换为xlsx的Powershell脚本

    我想将文本文件转换为 Excel 格式 我使用来自 Technet 的以下脚本 Script name ConvertTilde ps1 Created on 2007 01 06 Author Kent Finkle Purpose Ho
  • 使用鼠标选择日期时,JQuery UI Datepicker 失去焦点

    我将 JQuery ui 与日期选择器一起使用 当用户点击某个字段时 他们会适当地弹出日历 用户选项卡 通过按键进入字段 用户通过鼠标单击选择日期 用户选项卡 Tabindex 从 1 开始 在表单的开头 这是代码 也可能设置选项卡索引
  • 如何创建很棒的字体图标的禁用状态?

    我正在使用很棒的字体图标 并且我需要使图标处于禁用状态 有什么办法可以做到这一点吗 我也在使用引导程序 这就是我使用图标的方式 i class fa fa slack i i 我只需要图标看起来像灰色的 为残疾人编写一个自定义类 就像是 f
  • 单元测试期间 Ada 中的异常处理

    我正在尝试为我最近编写的一些 Ada 代码编写一些单元测试 我有一个特殊的情况 我希望得到一个异常 如果代码工作正常 我不会 但在这种情况下我所做的只是测试 而不是编写代码 如果我在测试例程中处理异常 那么我不知道如何继续在该过程中进行测试
  • R/shiny + mathjax,不渲染数学

    我的行为很奇怪MathJax and shiny 我已经修改了01 hello示例来自shiny包包括一个 Rmd文件通过includeMarkdown 我修改的只是ui R如下 Show a plot of the generated d
  • 在我的 CentOS 机器上找不到wireshark init.lua

    所以我试图在我的 CentOS 7 服务器上获取一个与 tshark 一起使用的脚本 但我遇到了问题 该脚本在我的Windows笔记本电脑上运行良好 我只是将其放在appdata的plugins文件夹中 但我在linux上找不到类似的位置
  • 如何检索泛型方法的名称,包括泛型类型名称

    In C 我有一个具有以下签名的方法 List
  • 如何设置内容类型标头以响应 Pyramid Web 框架中的特定文件类型

    我正在使用金字塔网络框架来构建一个网站 我不断在 Chrome 控制台中收到此警告 资源解释为字体 但使用 MIME 类型 application octet stream 传输 http static images fonts font
  • Draw.io XML 文件的格式?

    我在 draw io 中创建了一个形状并将其导出以获取其 XML 文件 如下所示
  • 如何将 gRPC 定义的 API 引入 Web 浏览器

    我们想要为我们的 gRPC 微服务构建一个 Javascript HTML gui 由于浏览器端不支持 gRPC 我们想到使用 web sockets 连接到 node js 服务器 该服务器通过 grpc 调用目标服务 我们努力寻找一个优
  • 在 php 中使用 isset() 而不是 @ 是否有任何重要原因

    所以我正在努力清理一个可怕的代码库 并且我正在慢慢转向完整的错误报告 这是一个艰巨的过程 有数百条通知 内容如下 Notice Undefined index incoming in path to code somescript php
  • libgdx 将窗口定位在舞台之外

    我想知道如何使用 MoveToAction 或任何方法 将 scene2d 窗口定位在舞台之外 我希望菜单能够滑入和滑出 我的舞台和皮肤存储在我的世界级中 这些方法目前工作正常 但根本没有动画效果 Window window new Win
  • AVPlayer无法播放

    我想用 AVPlayer 播放远程 mp3 我无法让它工作 我也看不出它不起作用的原因 代码 NSString urlstr some link to a mp3 NSURL url NSURL URLWithString urlstr s
  • GS1-128条码解析

    扫描仪型号 Motorola DS4208 HC 我们需要解析 GS1 128 条形码 我们知道他们将使用 GTIN 01 批号 10 有效期 17 序列号 21 输入字符串 01 07612345678900 17 100503 10 A
  • 如何避免单个像素线在wpf中消失?

    我使用路径element StrokeThickness 1 SnapsToDevicePixels True 在网格中 我想调整窗口大小 Grid 元素被 Viewbox 元素包裹 Problem 当我调整窗口大小时 路径有时会消失 如果
  • 使用导航组件时从子级获取父级片段

    我需要将数据从一个片段传输到另一个片段 现在推荐的方法是使用共享ViewModel 为了在两个片段中获得相同的实例 需要共同的所有者 因为这可能是他们的共同点Activity 但通过这种方法 在单一活动的情况下 ViewModel实例将存在
  • 跨浏览器自定义复选框

    I have HTML and CSS我用来构建自定义复选框的代码 我相信我的代码具有正确的网络工具包 但它似乎不适用于 FireFox 这是代码 HTML
  • Delphi 带有 HTML/CSS 界面

    我想开发一个带有 HTML CSS 图形用户界面的 delphi 应用程序 不一定在 Web 浏览器中运行 我想这样做 创建一个更丰富的带有动画等的图形用户界面 并摆脱正常的 VCL 组件 Windows 外观 有什么建议么 HTML 和
  • 指针数组的大小

    我对 sizeof 运算符有疑问 Code 1 int main int p 10 printf d sizeof p output 40 return 0 Code 2 int main int p 10 printf d sizeof