操作系统下的指针长度
来源:互联网 发布:软件开发可行性报告 编辑:程序博客网 时间:2024/05/18 01:34
在学习C语言时,相信很多初学者对指针的长度都会有相当程度的判断不准确。本篇博客,将会对指针在不同的系统环境下的长度做出实验验证,以及解析。
实验目的:主要判断指针字节长度,也会对struct结构体的字节长度进行判断和拓展解析。
实验环境:32位ubuntu系统下的gcc编译器
示例代码:
#include <stdio.h>
struct info{
char a;
char b;
};
int main() {
int x = 20;
char y = 'A';
double z = 1.0;
struct info *test = NULL;
int *p1 = &x;
char *p2 = &y;
double *p3 = &z;
struct info *p4 = test;
printf("the size list are %d,%d,%d,%d\n",sizeof(p1),sizeof(p2),sizeof(p3),sizeof(p4));
printf("the struct size is %d\n", sizeof(struct info));
}
32位Ubuntu系统实验结果:
64位ubuntu系统的实验结果:
拓展:
指针为了能够正确指示内存中的地址,需要按照地址总线的宽度进行变量的存储,尽管64位CPU的数据宽度为64位而其地址总线一般不为64位(能访问的内存空间大的惊人,暂时估计应该还做不到),一般能超过32位,指针的长度也就大于4个字节(32位的),64位机的指针字节为64位即8个字节,而32位机的地址总线一般为4个字节(即支持4GB的内存),则其指针的宽度为4个字节。
为了代码效率,我们在定义结构体的时候,如果结构体、数组所包含的字节不超过4个字节,则一般凑齐4个字节。最好定义长度是4的整数倍数。
- 操作系统下的指针长度
- 处理器,操作系统,程序的位数,指针的长度
- 指针的长度
- C语言的指针长度
- 数组和指针的长度
- C#中获得当前操作系统地址长度的代码(WIN XP下验证)
- 16位,32位,64位操作系统下,各类型的长度整理
- 操作系统对文件路径长度的限制
- 32操作系统各种数据类型的长度
- 指针长度
- 得到指针指向的数组的长度
- 枚举类型和指针的长度
- c++ 求指针指向的字符串长度
- 字符指针和字符数组的长度
- 利用指针计算字符串的长度
- 获取char指针内容的长度
- 求字符串的长度(用指针做形参)
- 求字符串的长度(指针)
- OpenGrok源码搜索引擎搭建
- 数组中出现次数超过一半的数字
- java 写一个简单的计算器
- java io系列08之 File总结
- Using assembly writing algorithm programs
- 操作系统下的指针长度
- Ubuntu下搭建R语言开发环境
- Java-IO之字符输入输出流(Reader和Writer)
- 剑指offer(4)-O(1)时间删除链表结点
- 8086数据寄存器介绍
- 一个页面从输入 URL 到页面加载显示完成,这个过程中都发生了什么?
- 如何对示波器中的参数和图片进行处理心得整理
- 百度云的产品及使用场景分析
- Java-IO之CharArrayReader