sizeof 的用法
void foo(char str[100]) { cout<<sizeof(str)<<endl; } int main () { char str[]="\b\0"; char *p =str; int n=10; void *x = malloc(100); cout << sizeof(str)<<endl; //3数组内只有三个字符 cout <<sizeof(p)<<endl; //4---指针均为四个字节 cout<<sizeof(n)<<endl; //4----int型为四个字节 cout<<sizeof(x)<<endl; //4----指针为四个字节 foo(str); //4 return 0; }
(1)注意字符串时,后面隐藏着一个'\0'字符。
而且转义字符算一个字符来计算,转移字符如下图所示:
转义字符
|
意义
|
ASCII码值(十进制)
|
\a
|
响铃(BEL)
|
007
|
\b
|
退格(BS) ,将当前位置移到前一列
|
008
|
\f
|
换页(FF),将当前位置移到下页开头
|
012
|
\n
|
换行(LF) ,将当前位置移到下一行开头
|
010
|
\r
|
回车(CR) ,将当前位置移到本行开头
|
013
|
\t
|
水平制表(HT) (跳到下一个TAB位置)
|
009
|
\v
|
垂直制表(VT)
|
011
|
\\
|
代表一个反斜线字符''\'
|
092
|
\'
|
代表一个单引号(撇号)字符
|
039
|
\"
|
代表一个双引号字符
|
034
|
\? |
代表一个问号 |
063 |
\0
|
空字符(NULL)
|
000
|
\ooo
|
1到3位八进制数所代表的任意字符
|
三位八进制
|
\xhh
|
1到2位十六进制所代表的任意字符
|
二位十六进制
|
注意:区分,斜杠:"/" 与 反斜杠:"\" ,此处不可互换
(2)指针均为4个字节
(3)char 1字节
short 2字节
int long float 4字节
double 8字节
(4)数组a作为函数形参时,sizeof(a)=4;
数组b作为局部变量/全局变量/静态变量 的数组时,sizeof(b)=数组的元素个数。