【C语言学习笔记】之sizeof

代码1:

#include <stdio.h>

int main() {
	char *str = "GeeksQuiz";
	char str1[] = "GeeksQuiz";
	char str2[] = { 'G', 'e', 'e', 'k', 's', 'Q', 'u', 'i', 'z' };
	int n = sizeof(str) / sizeof(str[0]); //4, str是一个指针
	int n1 = sizeof(str1) / sizeof(str1[0]); //10, str1是一个数组,注意'\0'
	int n2 = sizeof(str2) / sizeof(str2[0]); //9,数组,

	printf("n = %d, n1 = %d, n2 = %d", n, n1, n2);

	return 0;
}

笔记:

In main, the name array is an array so you get the size in bytes of the array with sizeof. 

However, an array decays to a pointer when passed to a function, so you get sizeof(int*) inside the function.

代码2:

#include<stdio.h>
/*数组名当函数参数传递时,会被当做指针处理*/
void func1(int a[]) {
	printf("%d\n",sizeof(a)); // 4
}

void func2(int *a) {
	printf("%d\n", sizeof(a));
}
int main() {
	int array[] = { 1, 2, 3 };
	printf("%d\n", sizeof(array)); // 12
	func1(array);//4
	func2(array);//4
	return 0;
}

参考: http://stackoverflow.com/questions/9509829/c-size-of-array



你可能感兴趣的:(【C语言学习笔记】之sizeof)