C语言中指针占据内存空间问题
以前一直有个疑问,指向不同类型的指针到底占用的内存空间是多大呢? 这个问题我多次问过老师,老师的答案是“指向不同类型的指针占据的内存空间大小不同”,我一直很之一这个答案,今天我就做了个小小的实验,发现的确老师的答案是错误的。废话不多说,直接上代码:
#include<iostream>
using namespace std;
void main(){
double j=5;
double &i=j;
double *pi=&i;
cout<<"&pi="<<&pi<<endl;
cout<<"&i="<<&i<<endl;
cout<<"&j="<<&j<<endl;
cout<<"sizeof(j)="<<sizeof(j)<<endl;
cout<<"sizeof(i)="<<sizeof(i)<<endl;
cout<<"sizeof(pi)="<<sizeof(pi)<<endl;
}
运行出的结果在我的意料之中,
C语言中指针变量是占据内存空间的,而且根据不同的开发环境,占据的内存大小不同。
我上网查了些资料;
32位windows系统占用4字节
64位windows系统占用8字节
实施证明,老师说的是错的。 好了这点经验分享给大家了,本人是初学者,欢迎高手指教。谢谢大家!
QQ:178904780
C语言中指针占据内存空间问题的更多相关文章
- 这样子来理解C语言中指针的指针
友情提示:阅读本文前,请先参考我的之前的文章<从四个属性的角度来理解C语言的指针也许会更好理解>,若已阅读,请继续往下看. 我从4个属性的角度来总结了C语言中的指针概念.对于C语言的一个指 ...
- C语言中指针和数组
C语言数组与指针的那些事儿 在C语言中,要说到哪一部分最难搞,首当其冲就是指针,指针永远是个让人又爱又恨的东西,用好了可以事半功倍,用不好,就会有改不完的bug和通不完的宵.但是程序员一般都有一种迷之 ...
- C语言指针及占据内存空间
第一.了解内存空间 本文章文字有点多,会有点枯燥,配合图文一起看可以缓解枯燥,耐心阅读哦!!! 先了解内存地址,才更好的理解指针! 我们可以把内存想象为成一列很长很长的货运火车,有很多大小相同的车厢, ...
- C语言中 指针和数组
C语言的数组表示一段连续的内存空间,用来存储多个特定类型的对象.与之相反,指针用来存储单个内存地址.数组和指针不是同一种结构因此不可以互相转换.而数组变量指向了数组的第一个元素的内存地址. 一个数组变 ...
- 编程基础-c语言中指针、sizeof用法总结
1.指针 学习 C 语言的指针既简单又有趣.通过指针,可以简化一些 C 编程任务的执行,还有一些任务,如动态内存分配,没有指针是无法执行的.所以,想要成为一名优秀的 C 程序员,学习指针是很有必要的. ...
- C语言中的使用内存的三段
1.正文段即代码和赋值数据段 一般存放二进制代码和常量 2.数据堆段 动态分配的存储区在数据堆段 3.数据栈段 临时使用的变量在数据栈段 典例 若一个进程实体由PCB.共享正文段.数据堆段和数据栈段组 ...
- C语言中指针的使用
什么是指针:指针就是一个变量,是一个存放内容的内存空间.指针存放的内容是另一个内存空间的起始地址.不同于一般变量存放的就是变量值.取值操作符*对于指针的作用是取得指针变量存放的内存地址里面的值,不加* ...
- C语言中指针*p[N], (*P)[N],及**p的区别
在C语言编程中指针经常困扰着我们,但是若能灵活运用指针的话,将会使得我们编程变得更加轻松与高效.这里讲下*p[N], (*P)[N],及**p的区别,这也是之前经常困扰我的地方. 这三者的定义分别为: ...
- 理解C语言中指针的声明以及复杂声明的语法
昨天刚把<C程序设计语言>中"指针与数组"章节读完,最终把心中的疑惑彻底解开了.如今记录下我对指针声明的理解.顺便说下怎样在C语言中创建复杂声明以及读懂复杂声明. 本文 ...
随机推荐
- bufferIO,Direct io,mmap, ZeroCopy
1 bufferIO(传统IO),Direct io(干掉内核cache),mmap(大数据映射),zeroCopy(网络IO) 2 linux 5种IO 3NIO 相关知识 这张图展示了mmap() ...
- Linux 补丁生成与使用
我们在升级Linux 内核的时候,难免会接触到补丁的知识.下面对如何生成补丁和如何打补丁作讲解. 生成补丁: 制作 hello.c 和 hello_new.c 两个文件如如下所示. ➜ diff ls ...
- List特有迭代器--ListIterator的特殊功能
/** * >列表迭代器: * ListIterator listIterator():List集合特有的迭代器 * 该迭代器继承了Iterat ...
- 第二次项目冲刺(Beta版本)2017/12/6
一.任务明细 二.燃尽图 三.站立式会议 1.照片(随后上传) 2.会议任务安排 四.总结 第一天冲刺,准备工作不足啊,期末了,最近大家都比较忙吧,开始战斗吧.
- array_map 巧替 foreach
1.array_reduce( $arr , callable $callback ) 使用回调函数迭代地将数组简化为单一的值. 其中$arr 为输入数组,$callback($result , $v ...
- 【Ansible 文档】【译文】Windows 支持
see also:List of Windows Modules Windows Support Windows 支持 Windows: How Does It Work Windows:如何工作 正 ...
- A “Type Erasure” Pattern that Works in Swift:类型域的转换
新视角:通过函数式编程的范畴理论来看待这个问题会更容易理解: 在低层类型无法很好表达的类型,可以将其转化为高阶类型进行表示. 将协议的实现类型转化为monad类型: 解决将具有关联类型的协议当作类型的 ...
- POJ2104 K-th Number(整体二分)
嘟嘟嘟 整体二分是一个好东西. 理解起来还行. 首先,需要牢记的是,我们二分的是答案,也就是在值域上二分,同时把操作分到左右区间中(所以操作不是均分的). 然后我就懒得讲了-- 李煜东的<算法竞 ...
- jsp二(指令)
一.jsp动作标签: 1)<jsp:forward> 请求转发 相当于之前的request.getRequestDispatcher(..).forward(..); <!--jsp ...
- 使用Tortoise结合Git比较两个版本的差异
1.右键项目,TortoiseGit -------> Diff with previous version 2.单击出分支选择弹窗,进行选择要比较的两个分支 3.比较同个分支的两个不同的版本 ...