我是靠谱客的博主 儒雅水池,这篇文章主要介绍C语言----C语言中sizeof的用法,现在分享给大家,希望可以做个参考。

【原文链接】

sizeof是计算变量在内存的占空间的大小,单位是字节

(1)使用sizeof查看数据类型占空间大小

如下,可以查看C语言中各种基本数据类型的占用空间的大小

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# include <stdio.h> # include <string.h> int main() { printf("sizeof(char): %dn", sizeof(char)); printf("sizeof(short): %dn", sizeof(short)); printf("sizeof(int): %dn", sizeof(int)); printf("sizeof(long): %dn", sizeof(long)); printf("sizeof(long long): %dn", sizeof(long long)); printf("sizeof(float): %dn", sizeof(float)); printf("sizeof(double): %dn", sizeof(double)); return 0; }

执行结果如下:

复制代码
1
2
3
4
5
6
7
8
sizeof(char): 1 sizeof(short): 2 sizeof(int): 4 sizeof(long): 4 sizeof(long long): 8 sizeof(float): 4 sizeof(double): 8

(2)使用sizeof计算基本数据类型变量的占用空间的大小

如下,可以对基本数据类型的变量计算占用空间的大小

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# include <stdio.h> # include <string.h> int main() { char c = 'a'; int i = 1; short s = 1; long l = 1; long long ll = 1; float f = 1.0; double d = 1.0; printf("sizeof(c): %dn", sizeof(c)); printf("sizeof(s): %dn", sizeof(s)); printf("sizeof(i): %dn", sizeof(i)); printf("sizeof(l): %dn", sizeof(l)); printf("sizeof(ll): %dn", sizeof(ll)); printf("sizeof(f): %dn", sizeof(f)); printf("sizeof(d): %dn", sizeof(d)); return 0; }

执行结果如下:

复制代码
1
2
3
4
5
6
7
8
sizeof(c): 1 sizeof(s): 2 sizeof(i): 4 sizeof(l): 4 sizeof(ll): 8 sizeof(f): 4 sizeof(d): 8

(3)sizeof对变量名或者字面值可以不用括号,但是计算类型是必须要加括号的

如下,计算变量c和数值1的占用内存的大小,不用括号也是完全可以的,但是如果直接使用sizeof int 则是不可以的

复制代码
1
2
3
4
5
6
7
8
9
10
# include <stdio.h> # include <string.h> int main() { char c = 'a'; printf("sizeof c: %dn", sizeof c); printf("sizeof 1: %dn", sizeof 1); return 0; }

执行结果如下:

复制代码
1
2
3
sizeof c: 1 sizeof 1: 4

(4)用于计算数组长度以及对字符数组时与strlen的区别

使用sizeof计算数组时,结果为数组长度*数组元素占用空间的大小,当数组为字符数组时,sizeof的功能是一致的,只不过当使用字符数组定义字符串的时候,对于字符串比如hello,数组中会自动增加一个元素’’,所以sizeof计算的结果为6,而strlen是计算字符串长度的,遇到’’结束,但是不把’’计算在内,因此strlen计算的结果为5,这与我们感觉上的字符串的长度为5的感觉是一致的,这就是strlen和sizeof在计算字符数组的时候的区别

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
# include <stdio.h> # include <string.h> int main() { int arr[] = { 1,2,3,4,5,6,7,8,9,0 }; printf("sizeof(arr): %dn", sizeof(arr)); char arr2[] = "hello"; printf("sizeof(arr2): %dn", sizeof(arr2)); printf("strlen(arr2): %dn", strlen(arr2)); return 0; }

执行结果如下:

复制代码
1
2
3
4
sizeof(arr): 40 sizeof(arr2): 6 strlen(arr2): 5

(5)使用sizeof计算指针的占用空间大小

这里需要注意的是,32位平台所有类型的指针的占用空间大小都是4个字节,64位平台所有类型的指针占用的空间大小为8个字节,观察如下代码:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h> int main() { printf("sizeof(char*): %dn", sizeof(char*)); printf("sizeof(short*): %dn", sizeof(short*)); printf("sizeof(int*): %dn", sizeof(int*)); printf("sizeof(long*): %dn", sizeof(long*)); printf("sizeof(long long*): %dn", sizeof(long long*)); printf("sizeof(float*): %dn", sizeof(float*)); printf("sizeof(double*): %dn", sizeof(double*)); return 0; }

在32位下执行结果如下:

复制代码
1
2
3
4
5
6
7
8
sizeof(char*): 4 sizeof(short*): 4 sizeof(int*): 4 sizeof(long*): 4 sizeof(long long*): 4 sizeof(float*): 4 sizeof(double*): 4

在64位下执行结果如下:

复制代码
1
2
3
4
5
6
7
8
sizeof(char*): 8 sizeof(short*): 8 sizeof(int*): 8 sizeof(long*): 8 sizeof(long long*): 8 sizeof(float*): 8 sizeof(double*): 8

最后

以上就是儒雅水池最近收集整理的关于C语言----C语言中sizeof的用法的全部内容,更多相关C语言----C语言中sizeof内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(73)

评论列表共有 0 条评论

立即
投稿
返回
顶部