c语言中数组与sizeof()
2016-03-05 21:56
337 查看
我以前的理解是:数组名字就是指向数组首元素的指针,然而用sizeof()操作数组名字,把我又弄得有些疑惑了。查了查资料,终于明白了。
原来,数组名字做形参时才被当作指针。而sizeof()并不是一个函数,而是一个单目运算符,所以sizeof()里写数组名字,返回的就是数组占了多少字节。
例如: char a[10] = {1,2,3};
sizeof(a) = 10;
char(*p)[10] = &a;
sizeof(p) = 4 // win32
char b[10][10];
sizeof(b) = 100;
p = b; //此时b为指向b[10][10]第一行元素(长10的一维字符数组)的数组指针
sizeof(p) = 4;
原来,数组名字做形参时才被当作指针。而sizeof()并不是一个函数,而是一个单目运算符,所以sizeof()里写数组名字,返回的就是数组占了多少字节。
例如: char a[10] = {1,2,3};
sizeof(a) = 10;
char(*p)[10] = &a;
sizeof(p) = 4 // win32
char b[10][10];
sizeof(b) = 100;
p = b; //此时b为指向b[10][10]第一行元素(长10的一维字符数组)的数组指针
sizeof(p) = 4;