首页 > 其他分享 >看过这个,你可能更了解指针一点

看过这个,你可能更了解指针一点

时间:2024-11-15 14:19:25浏览次数:1  
标签:表示 看过 答案 int 元素 地址 了解 数组 指针

我们先来看下图

如果是你,你会认为每一行的输出结果是什么?

接下来我们开始分析
****在1中

****我们知道1中的a被单独使用在数组中,
所以此时的a表示一整个数组。
而int 是其数组储存的类型,一个int 占4个字节,所以是4乘4=16。
1的答案为16。

**** 在2中

****a+0则表示首元素地址,则此时sizeof计算的是a[0]地址的大小。
在32位一个地址的大小为4个字节,而在64位中是8个字节。
2的答案为4或8。

**在3中

a不是单独出现,所以这里表示的是a数组的首元素的地址,
表示对其解引用,则
a表示的是a[0]这个元素本身。
a的第一个元素为1,则求1的大小,因为1是int 类型,则输出结果为4
3的答案为4。

****在4中

与上面的2类似,a表示首元素的地址,+1则表示跳过一个元素地址的大小,
则a+1表示的是a[1]这个元素的地址的大小
所以4的答案为4或8。(在32位中是4,在64位中是8)

****在5中

所以其实a[1]是指2这个元素,则其大小为4(int类型)
5的答案为4。

****在6中

看到这里,你也许会认为结果为4乘4或者4乘8,
但是&a虽然表达的是数组的地址,
但是它也是地址,所以答案为4或8。
6的答案为4或8。

***在7中
由于a跟在&的后面,所以a在这里表示的是整个数组,
而&a则是取了整个数组的地址。
则是对a这个数组的地址解引用,得到的是数组中的每一项。
1、2、3、4.一共有四个元素,为int型所以是,4乘4=16个字节
7的答案为16。

****在8中

&a已经分析过了是表示a的地址,
而&a+1表示的则是跳过了a这个数组大小后到达的地址,即上图所示的位置。
当然了,即使是这样,在a之后的地址依旧是地址,
地址只由32位或64位决定大小,即答案为4或8.
8的答案为4或8。
****在9中

&a[0]表示取首元素的地址,答案理所应当是4或8了
9的答案为4或8。
****在10中
a[0]与a表示的含义相同,都是首元素,
因此&a[0]+1与&a+1实际上是等效的,参照上一题,这题的答案依旧是4或8
10的答案为4或8。
最后,附上64位运行的结果。

标签:表示,看过,答案,int,元素,地址,了解,数组,指针
From: https://www.cnblogs.com/CxstaR/p/18546375

相关文章

  • 你想了解的DDS协议解决方案在这里
        随着汽车电子电气架构快速演进,车企对车内网络通信性能、安全性、灵活性要求日益提升,车载总线通信技术也迎来革新挑战。在此背景下,DDS(DataDistributionService)凭借其高性能、高可靠和低延迟的特点,有力支撑了智能汽车系统的高效运行。    DDS协议凭借其在物......
  • c11智能指针
      普通指针的不足new和new[]的内存需要用delete和deletel]释放。程序员的主观失误,忘了或漏了释放。程序员也不确定何时释放。普通指针的释放类内的指针,在析构函数中释放。C++内置数据类型,如何释放?new出来的类,本身如何释放?C++11新增三个智能指针类型uniqu......
  • C语言-指针及变量的概念与使用
    1、指针的概念计算机中所有的数据都必须放在内存中,不同类型的数据占用的字节数不一样,例如int占用4个字节,char占用1个字节。为了正确地访问这些数据,必须为每个字节都编上号码,就像门牌号、身份证号一样,每个字节的编号是唯一的,根据编号可以准确地找到某个字节。下图是4......
  • 了解DriverManager
    它其实就是管理我们的数据库驱动的:publicstaticsynchronizedvoidregisterDriver(java.sql.Driverdriver,DriverActionda)throwsSQLException{/*Registerthedriverifithasnotalreadybeenaddedtoourlist*/if(driver!=null){registeredDrivers.ad......
  • linux: Out-Of-Memory Killer 机制了解
    在Linux操作系统中,内存管理是确保系统稳定性和性能的关键环节。当系统内存耗尽时,Linux内核会启动一种称为OOMKiller(Out-Of-MemoryKiller)的机制,以选择并终止某些进程,释放内存资源,防止系统崩溃。一、OOMKiller的背景Linux内核采用了内存过度提交(Overcommit)的策略,即允许......
  • 带你一起全面了解关于Python网络爬虫的相关知识点!
     成长路上不孤单......
  • 什么?还不会HTML的表格标签的运用,今天来带大家了解一下HTML的表格标签,内置4篇整理好的
    HTML表格文章目录HTML表格@[toc]HTML的表格介绍以下是一个简单的HTML表格实例:在线实例表格实例HTML表格和边框属性HTML表格表头更多实例HTML表格标签4篇笔记写笔记1.tr与td的详细讲解2.HTML的table的介绍3.常用的标签4.表格标签首先,先给大家介绍一下什么......
  • [c/cpp]:模板指针
    [c/cpp]:模板指针    一、程序代码1#include<iostream>234intmsg(intx)5{6std::cout<<"\t[msg]#\tx:="<<x<<std::endl;7returnx;8}91011//generalpointer12int(*fun)(int);1314......
  • 理解C语言之深入理解指针
    目录一、1.内存和地址1.1内存1.2究竟该如何理解编址2.指针变量和地址2.1取地址操作符(&)2.2指针变量和解引⽤操作符(*)2.2.1指针变量2.2.2如何拆解指针类型2.2.3解引⽤操作符2.3指针变量的⼤⼩3.指针变量类型的意义3.1指针的解引⽤3.2指针+-整数3.3v......
  • c++ 标准 智能指针 与 qt 智能指针 对比
    C++标准库提供了std::unique_ptr和std::shared_ptr等智能指针,而Qt则提供了QScopedPointer、QSharedPointer和QWeakPointer等自己的智能指针。两者在设计上有一些相似之处,但也存在一些关键的差异。下面是C++标准智能指针和Qt智能指针的详细对比:1.std::uniq......