char str[]="hello"; sizeof(str)是多少?

#include 
#include 
#include 

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


你可能感兴趣的:(C/C++开发笔记)