最新消息: 新版网站上线了!!!

c语言sizeof获取数据类型长度

先看代码在看说明和和结果会让人更多的更加纯粹的思考,同时减少多余词汇造成的负担,这里只通过int类型为例试验,其他类型雷同

注意在使用sizeof时与你系统是32位或者64位有关系,同时和你环境中编译器有关

一、代码

#include<stdio.h>
int main(void){
int a = 1;
int b = 10223372036854775807;
printf("%d\n",sizeof(int));
printf("%d\n",sizeof(a));
printf("%d\n",sizeof(b));
return 0;
}

1. 2个整型变量a和b值的长度相差很大,可是通过sizeof打印的结果是相同的,那换成其他类型的变量(char等)是否也是这个现象?大家可以自己测试

2. 通过sizeof处理数据类型和此类型的变量,然后打印所得结果也是相同的,这个又是为什么?问题肯定出在sizeof的语句结构上,大家快暂停去查查sizeof在c语言中的语法


二、代码执行结果

1.jpg

对编译执行结果和结合上述抛出的2个问题思考思考.....



三、问题解释

int i;

sizeof有三种语句形式

1. sizeof(object);   //sizeof(对象); 这里的对象可以是变量也可以是表达式 sizeof(i);

2. sizeof(type_name);   //sizeof(类型); sizeof(int);

3. sizeof object;  //sizeof 对象 ; sizeof i;

说明:实际上sizeof计算一个对象(变量或者表达式结果)的大小也是转换成对应类型的计算。所以统一类型不通变量其sizeof值都是一致的,和变量赋的值大小没关系。


四、延伸

1. 指针

#include<stdio.h>
int main(void){
int a = 1;
int * p = &a;
printf("%d\n",sizeof(int));
printf("%d\n",sizeof(a));
printf("%d\n",sizeof(p));
char * pc="abc";
printf("%d\n",sizeof(pc));
int * pi;
printf("%d\n",sizeof(pi));
char **ppc=&pc;
printf("%d\n",sizeof(ppc));
void (*pf)();    //指针函数
printf("%d\n",sizeof(pf));
return 0;
}

结果:

2.jpg



2.数组

通过sizeof有助于我们更好的深入了解数组

#include<stdio.h>
int main(void){
char a1[]={"qwqwqw"};
int a2[3];
printf("%d\n",sizeof(a1)); //结果7
printf("%d\n",sizeof(a2)); //结果12
return 0;
}

3.jpg


.....

转载请注明:谷谷点程序 » c语言sizeof获取数据类型长度