郝斌的C语言基础 137 一个指针变量到底占几个字节
2016-12-08 22:44
309 查看
一个指针变量到底占几个字节
预备知识
sizeof(数据类型)
功能:返回值就是该数据类型所占的字节数
例子: sizeof(int) 值是4 sizeof(char) 值是1 sizeof(double) 值是8
假设p 指向char 类型变量(1个字节)
假设q 指向int类型变量(4个字节)
假设r 指向double类型变量(8个字节)
p q r 本身所占的字节数是否一样? 是一样的
32位的地址总线就有32根线,每根线有两种状态(0或1),所以最大可以控制2^32=4294967296个内存单元, 就是4G个单元,每个单元就是一个字节
每一个字节都有一个地址,所以就有4G个地址编号,如果编号从0开始,那么就有4294967295个地址,即地址编号为:0x00000000~0xffffffff.
所以每个地址(指针)也是占32位(即4个字节)的.如果为64位的,那么指针的的大小就占8个字节了.
预备知识
sizeof(数据类型)
功能:返回值就是该数据类型所占的字节数
例子: sizeof(int) 值是4 sizeof(char) 值是1 sizeof(double) 值是8
假设p 指向char 类型变量(1个字节)
假设q 指向int类型变量(4个字节)
假设r 指向double类型变量(8个字节)
p q r 本身所占的字节数是否一样? 是一样的
32位的地址总线就有32根线,每根线有两种状态(0或1),所以最大可以控制2^32=4294967296个内存单元, 就是4G个单元,每个单元就是一个字节
每一个字节都有一个地址,所以就有4G个地址编号,如果编号从0开始,那么就有4294967295个地址,即地址编号为:0x00000000~0xffffffff.
所以每个地址(指针)也是占32位(即4个字节)的.如果为64位的,那么指针的的大小就占8个字节了.
#include<stdio.h> int main(void) { char ch = 'a'; int i = 99; double x = 66.6; char *p = &ch; int *q = &i; double *r = &x; printf("p的大小是:%d q的大小是:%d r的大小是:%d",sizeof(p),sizeof(q),sizeof(r)); return 0; }
相关文章推荐
- 一个指针变量到底占几个字节
- 一个指针变量到底占几个字节
- 一个指针变量到底占几个字节
- 郝斌的C语言基础 134 确定一个一维数组需要几个参数
- 一个指针变量到底占几个字节
- 一个指针变量占几个字节问题
- 郝斌的C语言基础 136 指针变量的运算
- 一个指针变量占几个字节
- 一个指针变量占几个字节问题
- Java语言中一个字符占几个字节?
- Java 语言中一个字符占几个字节?
- 一个指针变量占几个字节问题
- 整型到底占几个字节呢?
- iOS常用的几个基础类 一个不用xib文件的例子
- 给出一个函数来合并两个字符串A和B。字符串A的后几个字节和字符串B的前几个字节重叠
- 给出一个函数,来复制两个字符串A,B ,字符串A的后几个字节和字符串B的前几个字节重叠
- C++ - 给出一个函数来连接两个字符串A和B,其中字符串A的后几个字节和字符串B的前几个字节重叠
- 给出一个函数来合并两个字符串A和B。字符串A的后几个字节和字符串B的前几个字节重叠
- 一个int类型到底占多少个字节
- 请编写实现malloc()内存分配函数功能一样的代码。给出一个函数来复制两个字符串A和B。字符串A的后几个字节和字符串B的前几个字节重叠。