C语言sizeof详解
来源:互联网 发布:方正字体侵权 淘宝 编辑:程序博客网 时间:2024/06/05 19:59
一. sizeof 与strlen对比 (来源http://www.vckbase.com/index.php/wv/789)
例子:
01.
char
* ss =
"0123456789"
;
02.
sizeof
(ss) 结果 4 ===》ss是指向字符串常量的字符指针
03.
sizeof
(*ss) 结果 1 ===》*ss是第一个字符
04.
05.
char
ss[] =
"0123456789"
;
06.
sizeof
(ss) 结果 11 ===》ss是数组,计算到\0位置,因此是10+1
07.
sizeof
(*ss) 结果 1 ===》*ss是第一个字符
08.
09.
char
ss[100] =
"0123456789"
;
10.
sizeof
(ss) 结果是100 ===》ss表示在内存中的大小 100×1
11.
strlen
(ss) 结果是10 ===》
strlen
是个函数内部实现是用一个循环计算到\0为止之前
12.
13.
int
ss[100] =
"0123456789"
;
14.
sizeof
(ss) 结果 400 ===》ss表示再内存中的大小 100×4
15.
strlen
(ss) 错误 ===》
strlen
的参数只能是
char
* 且必须是以
''
\0
''
结尾的
16.
17.
char
q[]=
"abc"
;
18.
char
p[]=
"a\n"
;
19.
sizeof
(q),
sizeof
(p),
strlen
(q),
strlen
(p);
20.
结果是 4 3 3 2
原则 1:struct各成员变量存放的起始地址相对于结构的起始地址的偏移量必须为该变量的类型所占用的字节数的倍数。
原则2:struct的总空间必须是结构体的节边界数(即结构中占用最大空间的类型所占用的字节数)
三.其他
1.sizeof(函数):结果为函数的返回类型的大小
例如
1.
short
f();
2.
printf
(
"%d\n"
,
sizeof
(f()));
2.sizeof(void)的结果为1
3.数组作为函数参数时当作指针处理
例如:
int f(double d,int i,char j,char k[5])
{
printf("__________\n");
printf("d:%d\n",sizeof(d));
printf("i:%d\n",sizeof(i));
printf("j:%d\n",sizeof(j));
printf("k:%d\n",sizeof(k));
printf("__________\n");
return ;
}
输出为:
__________
d:8
i:4
j:1
k:4
__________
4.sizeof(union)的结果为联合体中最长类型的长度
5.sizeof 只计算栈中的变量长度,一个类中的静态常量的不计入类的总长度
- C语言详解sizeof
- c语言详解sizeof
- C语言详解sizeof
- c语言详解sizeof
- c语言详解sizeof
- C语言sizeof详解
- C语言sizeof详解
- c语言--sizeof详解
- c语言详解sizeof
- C语言详解 sizeof
- c语言详解sizeof
- c语言详解sizeof
- c语言详解sizeof
- c语言详解sizeof
- c语言详解sizeof
- c语言详解sizeof
- c语言详解sizeof
- c语言详解sizeof
- 作为项目经理,怎么组织评审
- iOS: UIScrollView的属性scrollIndicatorInsets
- hdu4614 Vases and Flowers
- iOS: UIScrollView的属性scrollsToTop
- ubuntu12.04 64bit交叉编译器问题
- C语言sizeof详解
- iOS: UIScrollView的属性tracking
- iOS: UIScrollView的属性zoomBouncing
- openstack中协程分析
- Java 播放MP3 Dos 环境下
- POJ 2774 Long Long Message+Hdu 1403 Longest Common Substring (后缀数组 最长公共子串)
- 【Python的脸】——小前记
- iOS: UIScrollView的属性zooming
- winsock IO模型 select模型