#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char **argv)
{
char str[] = "Hello, World.";
char sta[20] = "Hello";
char *p = str;
char abc = 'c';
int ia = 4;
int ic[10];
/* 每个数组成员的大小是1,当然不要忘了后面还有一个结束符 '\0' */
printf("str[] 14: %d\n", sizeof(str) );
/* 固定数组长度,大小为数组长度值 */
printf("sta[20] 20: %d\n", sizeof(sta) );
/* 指针为地址,地址的长度和32位还是64位系统有关,32位系统为4, 64位系统值为8 */
printf("*p 8: %d\n", sizeof(p) );
/* 好理解,就是字符的大小 */
printf("abc 1: %d\n", sizeof(abc) );
/* int 占用4个字节 */
printf("ia 4: %d\n", sizeof(ia) );
/* 原理同字符数组 */
printf("ic 40: %d\n", sizeof(ic) );
return 0;
}
运行结果如下:
(1) 64为ubuntu编译运行
str[] 14: 14
sta[20] 20: 20
*p 8: 8
abc 1: 1
ia 4: 4
ic 40: 40
(2) 32位arm编译运行
str[] 14: 14
sta[20] 20: 20
*p 8: 4
abc 1: 1
ia 4: 4
ic 40: 40