C语言 没有重载,通过数组验证数据类型占字节数
来源:互联网 发布:emplace_back源码 编辑:程序博客网 时间:2024/06/01 09:50
数组在内存中存储是连续的,我们可以依次打印数组在内存中的地址,两个相邻数组元素之间的地址的差就是该类型数据在内存中占的大小
#include <stdio.h>#define ARRAY_LEN(array,len){ len=(sizeof(array) / sizeof(array[0]));}static void printArray(int*,int);static void printArray1(char*,int);//C语言不支持重载,不能有两个名字相同的函数。//static void printArray(char*,int);//这样写错误,重载是C++出现之后才有的static void printArrayFloat(float*,int);static void printArrayDouble(double*,int);int main (){ int var[] = {1, 2, 3}; char chs[]={'a','b','c','d'}; float floats[]={0.1,0.2,0.3,0.4}; double doubles[]={0.1,0.2,0.3,0.4}; int chsLen; int len; int floatsLen; int doublesLen; ARRAY_LEN(var,len); ARRAY_LEN(chs,chsLen); ARRAY_LEN(floats,floatsLen);//计算数组长度 ARRAY_LEN(doubles,doublesLen); /* 指针中的数组地址 */ printArray(var,len); printArray1(chs,chsLen); printArrayFloat(floats,floatsLen); printArrayDouble(doubles,doublesLen); return 0;}/*在C语言中,double、long、unsigned、int、char类型数据所占字节数和机器字长及编译器有关系64位编译器 char :1个字节char*(即指针变量): 8个字节 short int : 2个字节 int:4个字节 unsigned int : 4个字节 float: 4个字节 double: 8个字节 long: 8个字节 long long: 8个字节 unsigned long: 8个*/static void printArray(int* array,int len){ int i; int *ptr=array; printf("整形一维数组:每个元素占4个字节\n"); for ( i = 0; i < len; i++) { printf("存储地址:var[%d] = %x\n", i, ptr ); printf("存储数值:var[%d] = %d\n", i, *ptr ); /* 移动到下一个位置 */ ptr++; }}static void printArray1(char* array,int len){ int i; char* ptr=array; printf("字符型一维数组:每个元素占1个字节\n"); for ( i = 0; i < len; i++) { printf("存储地址:var[%d] = %x\n", i, ptr ); printf("存储数值:var[%d] = %c\n", i, *ptr ); /* 移动到下一个位置 */ ptr++; }}static void printArrayFloat(float* array,int len){ int i; float* ptr=array; printf("单精度浮点型float一维数组:每个元素占4个字节\n"); for ( i = 0; i < len; i++) { printf("存储地址:var[%d] = %x\n", i, ptr ); printf("存储数值:var[%d] = %f\n", i, *ptr ); /* 移动到下一个位置 */ ptr++; }}static void printArrayDouble(double* array,int len){ int i; double* ptr=array; printf("单精度浮点型double一维数组:每个元素占8个字节\n"); for ( i = 0; i < len; i++) { printf("存储地址:var[%d] = %x\n", i, ptr ); printf("存储数值:var[%d] = %f\n", i, *ptr ); /* 移动到下一个位置 */ ptr++; }}
结果:
整形一维数组:每个元素占4个字节存储地址:var[0] = 28ff04存储数值:var[0] = 1存储地址:var[1] = 28ff08存储数值:var[1] = 2存储地址:var[2] = 28ff0c存储数值:var[2] = 3字符型一维数组:每个元素占1个字节存储地址:var[0] = 28ff00存储数值:var[0] = a存储地址:var[1] = 28ff01存储数值:var[1] = b存储地址:var[2] = 28ff02存储数值:var[2] = c存储地址:var[3] = 28ff03存储数值:var[3] = d单精度浮点型float一维数组:每个元素占4个字节存储地址:var[0] = 28fef0存储数值:var[0] = 0.100000存储地址:var[1] = 28fef4存储数值:var[1] = 0.200000存储地址:var[2] = 28fef8存储数值:var[2] = 0.300000存储地址:var[3] = 28fefc存储数值:var[3] = 0.400000单精度浮点型double一维数组:每个元素占8个字节存储地址:var[0] = 28fed0存储数值:var[0] = 0.100000存储地址:var[1] = 28fed8存储数值:var[1] = 0.200000存储地址:var[2] = 28fee0存储数值:var[2] = 0.300000存储地址:var[3] = 28fee8存储数值:var[3] = 0.400000
阅读全文
0 0
- C语言 没有重载,通过数组验证数据类型占字节数
- C语言数据类型占字节数
- C语言数据类型占字节数
- C语言数据类型占字节数
- C语言数据类型占字节数
- C语言数据类型所占字节数
- C语言数据类型所占字节数
- C语言-数据类型所占字节数
- C语言数据类型占字节数
- C语言数据类型占字节
- C语言中常用数据类型所占字节数
- C语言拾遗:常见数据类型占字节数
- C语言中数据类型所占字节数总结
- C语言的数据类型所占的字节数
- C 语言各个数据类型所占字节数
- C语言第三篇:C语言数据类型及各数据类型所占内存字节数
- c语言数据类型对应字节数(32位,64位 int 占字节数)
- c语言数据类型对应字节数(32位,64位 int 占字节数)
- largest-rectangle-in-histogram
- 第三周java作业
- MATLAB图像处理基础知识3 findpeaks xlim
- ZigBee CC2530 Z-Stack 24 基于系统时钟的多功能按键1-实现
- Gulp入门基础总结
- C语言 没有重载,通过数组验证数据类型占字节数
- Kaldi-Timit 训练
- MySQL5.7 安装
- 【PB登陆的实现】
- Matlab中如何把m文件默认打开方式设成editor
- Springmvc和struts2的区别
- 栈的探究
- SpringBoot学习-(六)SpringBoot与Mybatis整合
- 【C#机房重构】用户sa失败-管道的另一端上无任何进程-无法找到表0