c语言指针占几个字节】的更多相关文章

指针即为地址,指针几个字节跟语言无关,而是跟系统的寻址能力有关,譬如以前是16为地址,指针即为2个字节,现在一般是32位系统,所以是4个字节,以后64位,则就为8个字节. 可以在自己的电脑上测试下: #include <stdio.h> int main(void) { int a=1; char b='a'; float c=1.0; void *p; p=&a; printf("a的地址为:0x%x,其字节数为:%d\n",p,sizeof(p)); p=&am…
一个指针在32位操作系统上,占4个字节 一个指针在64位操作系统上,占8个字节 但是,编译器为了兼容32位操作系统和64位操作系统,所以指针都是4个字节长度 为什么呢? 在计算机中,CPU不能直接与硬盘进行数据交换,CPU只能直接跟内存进行数据交换,而CPU是通过数据总线,地址总线,控制总线这三条总线和内存进行数据传输与操作 假设我们想通过CPU在内存中寻找一个数字x,首先CPU要通过地址总线,在内存中找到x的地址,通过控制总线知道该操作是读还是写,然后通过数据总线把数字传输到CPU中 我们知道…
一.先上答案 这个问题有坑,有两种回答 第一种解释: object实例对象,占16个字节. 第二种解释: Object o:普通对象指针(ordinary object pointer),占4个字节. new Object():object实例对象,占16个字节. 所以一共占:4+16=20个字节. 第二种解释就是在玩文字游戏了,但还是要知道的. 二.这个答案适用于所有情况吗 并不是,这个答案只适用于现在一般默认情况. 准确的说,只适用于Hotspot实现的64位虚拟机,默认开启了压缩类指针和压…
c99的动态数组是在栈上面开辟的,而new出来的是在堆上面开辟的.栈和堆的地址是从两端相向增长的.栈很小,一般只有几十k,vc6好像是64k.堆很大,在win32的虚拟地址空间可以分配到2g的内存.栈由程序自动操作,包括局部变量,参数传递,函数跳转时的返回地址等信息.堆由程序员自行管理内存,优势,节省空间,不用时即释放,缺点,可能因使用不但造成内存泄露,野指针,造成程序错误.1.把数组名赋值给指针表示将数组的首元素的地址赋予此指针.int a[3] = {2,5,8};int* p = a;2.…
很多人不敢讲C的指针,有些人讲不清,有些人怕讲错.初生牛犊不怕虎,就让我讲讲. 下面开始. 一.指针的定义  指针是内存单元的编号.内存单元是以字节为单位的.所以指针就是字节的编号. 比如我们的个人电脑,内存一般4GB吧,那么一共就有 :   4*1024*1024*1024 = 4294967296 字节,也就是4294967296个编号.一个字节拥有一个编号, 范围从 0  ~  4294967296-1 . 画个图表示:(注意字节由8位bit组成,为了直观我没画出来) 但是呢,一般我们是用…
转自(http://blog.csdn.net/ad_ad_ad/article/details/1522145) 指针是C语言中广泛使用的一种数据类型. 运用指针编程是C语言最主要的风格之一.利用指针变量可以表示各种数据结构: 能很方便地使用数组和字符串: 并能象汇编语言一样处理内存地址,从而编出精练而高效的程序.指针极大地丰富了C语言的功能. 学习指针是学习C语言中最重要的一环, 能否正确理解和使用指针是我们是否掌握C语言的一个标志.同时, 指针也是C语言中最为困难的一部分,在学习中除了要正…
指针困扰了一些学习编程的人,或许你的老师会告诉你,指针比较难理解. 我当时被老师的话唬住所以学习指针那章的时候都没心情听课.(说得像讲别的内容时我听了似的,开玩笑) 导致了学习链表的时候各种卧槽. *************************** 基本介绍 ************************** <C语言程序设计与实践>中这样写到: 程序中数据的使用往往是以变量的形式出现,每个变量都对应若干存储单元,变量的值存储在存储单元中,通过对变量的引用和赋值就可以使用或修改存储在存储…
关于C语言指针类型 强制转换  引用一篇文章: C语言中,任何一个变量都必须占有一个地址,而这个地址空间内的0-1代码就是这个变量的值.不同的数据类型占有的空间大小不一,但是他们都必须有个地址,而这个地址就是硬件访问的依据,而名字只是提供给程序员的一种记住这个地址的方便一点的方法.但是,不同的变量在机器中都是0-1代码,所以,我们不能简单的通过检查一个值的位来判断它的类型. 例如,定义如下: int a; float b; double c; long double d; (假设它们所占的字节分…
一.指针数组和数组指针的内存布局初学者总是分不出指针数组与数组指针的区别.其实很好理解:指针数组:首先它是一个数组,数组的元素都是指针,数组占多少个字节由数组本身决定.它是“储存指针的数组”的简称.数组指针:首先它是一个指针,它指向一个数组.在32 位系统下永远是占4 个字节,至于它指向的数组占多少字节,不知道.它是“指向数组的指针”的简称. 下面到底哪个是数组指针,哪个是指针数组呢:A)int *p1[10];B)int (*p2)[10];每次上课问这个问题,总有弄不清楚的.这里需要明白一个…
指针是C语言中广泛使用的一种数据类型. 运用指针编程是C语言最基本的风格之中的一个.利用指针变量能够表示各种数据结构: 能非常方便地使用数组和字符串: 并能象汇编语言一样处理内存地址,从而编出精练而高效的程序.指针极大地丰富了C语言的功能. 学习指针是学习C语言中最重要的一环, 是否能正确理解和使用指针是我们是否掌握C语言的一个标志.同一时候, 指针也是C语言中最为困难的一部分,在学习中除了要正确理解基本概念,还必需要多编程,上机调试.仅仅要作到这些,指针也是不难掌握的. 指针的基本概念 在计算…
1.语言中变量的实质 要理解C指针,我认为一定要理解C中“变量”的存储实质, 所以我就从“变量”这个东西开始讲起吧! 先来理解理解内存空间吧!请看下图: 内存地址→ 6 7 8 9 10 11 12 13 ----------------------------------------------------------------- ... | | | | | | | |.. ------------------------------- ---------------------------…
前言 这不是我第一次写关于C指针的文章了,只是因为指针对于C来说太重要,而且随着自己编程经历越多,对指针的理解越多,因此有了本文. 为什么需要指针? 指针解决了一些编程中基本的问题. 第一,指针的使用使得不同区域的代码可以轻易的共享内存数据.当然你也可以通过数据的复制达到相同的效果,但是这样往往效率不太好,因为诸如结构体等大型数据,占用的字节数多,复制很消耗性能.但使用指针就可以很好的避免这个问题,因为任何类型的指针占用的字节数都是一样的(根据平台不同,有4字节或者8字节).   第二,指针使得…
      在C语言中我们操作字符串肯定用到的是指针或者数组,这样相对来说对字符串的处理还是比较麻烦的,好在C++中提供了 string 类型的支持,让我们在处理字符串时方便了许多.这篇文章并不是讲解 string 类型的用法,而是讲解我个人比较好奇的问题,就是 string 类型占几个字节.       首先,我写了一段测试代码,如下所示: #include <iostream> using namespace std; int main(void) { string str_test1;…
文章更新,更加详细的介绍请看这篇:https://www.cnblogs.com/lulipro/p/7460206.html 很多人不敢讲C的指针,有些人讲不清,有些人怕讲错.初生牛犊不怕虎,就让我讲讲. 下面开始. 一.指针的定义  指针是内存单元的编号.内存单元是以字节为单位的.所以指针就是字节的编号. 比如我们的个人电脑,内存一般4GB吧,那么一共就有 :   4*1024*1024*1024 = 4294967296 字节,也就是4294967296个编号.一个字节拥有一个编号, 范围…
这段时间在看 Linux 内核,深觉 C 语言功底不扎实,很多代码都看不太懂,深入学习巩固 C 语言的知识很有必要.先从指针开始. 一.什么是指针 C语言里,变量存放在内存中,而内存其实就是一组有序字节组成的数组,每个字节有唯一的内存地址.CPU 通过内存寻址对存储在内存中的某个指定数据对象的地址进行定位.这里,数据对象是指存储在内存中的一个指定数据类型的数值或字符串,它们都有一个自己的地址,而指针便是保存这个地址的变量.也就是说:指针是一种保存变量地址的变量. 前面已经提到内存其实就是一组有序…
一.C语言指针的概念 在计算机中,所有的数据都是存放在存储器中的.一般把存储器中的一个字节称为一个内存单元,不同的数据类型所占用的内存单元数不等,如整型量占2个单元,字符量占1个单元等,在前面已有详细的介绍.为了正确地访问这些内存单元,必须为每个内存单元编上号.根据一个内存单元的编号即可准确地找到该内存单元.内存单元的编号也叫做地址.既然根据内存单元的编号或地址就可以找到所需的内存单元,所以通常也把这个地址称为指针.  内存单元的指针和内存单元的内容是两个不同的概念. 可以用一个通俗的例子来说明…
指针是C语言中广泛使用的一种数据类型. 运用指针编程是C语言最主要的风格之一.利用指针变量可以表示各种数据结构: 能很方便地使用数组和字符串: 并能象汇编语言一样处理内存地址,从而编出精练而高效的程序.指针极大地丰富了C语言的功能. 学习指针是学习C语言中最重要的一环, 能否正确理解和使用指针是我们是否掌握C语言的一个标志.同时, 指针也是C语言中最为困难的一部分,在学习中除了要正确理解基本概念,还必须要多编程,上机调试.只要作到这些,指针也是不难掌握的. 指针的基本概念 在计算机中,所有的数据…
Linux C语言指针与内存 前面我们对于: c语言的基本用法 makeFile文件的使用 main函数的详解 标准输入输出流以及错误流管道 工具与原理 指针与内存都是c语言中的要点与难点 指针 数组 字符串 堆内存与栈内存的差异 gdb内存调试工具 gdb是linux中的调试工具,可以让我们直接查看内存中的数据. 我们可以看到cpu到底做了什么事,而内存中又发生了什么变化 C语言中指针的基本用法(初识指针) main0.c: #include <stdio.h> void change(in…
指针是C语言中广泛使用的一种数据类型. 运用指针编程是C语言最基本的风格之中的一个.利用指针变量能够表示各种数据结构: 能非常方便地使用数组和字符串: 并能象汇编语言一样处理内存地址,从而编出精练而高效的程序.指针极大地丰富了C语言的功能. 学习指针是学习C语言中最重要的一环, 是否能正确理解和使用指针是我们是否掌握C语言的一个标志.同一时候, 指针也是C语言中最为困难的一部分,在学习中除了要正确理解基本概念,还必需要多编程,上机调试.仅仅要作到这些,指针也是不难掌握的. 指针的基本概念 在计算…
一.什么是指针 C语言里,变量存放在内存中,而内存其实就是一组有序字节组成的数组,每个字节有唯一的内存地址.CPU 通过内存寻址对存储在内存中的某个指定数据对象的地址进行定位.这里,数据对象是指存储在内存中的一个指定数据类型的数值或字符串,它们都有一个自己的地址,而指针便是保存这个地址的变量.也就是说:指针是一种保存变量地址的变量. 前面已经提到内存其实就是一组有序字节组成的数组,数组中,每个字节大大小固定,都是 8bit.对这些连续的字节从 0 开始进行编号,每个字节都有唯一的一个编号,这个编…