第一题
char *pBuffer = NULL;
char buffer[100];
pBuffer = (char *)malloc(200);
printf("pBuffer [%d], bufffer[%d]/n", sizeof(pBuffer), sizeof(buffer));
-------------
1. 以上打印的答案是什么?
2. 为什么?
第2题
递归调用函数的局部变量是每次都从栈里面重新分配么? 还是要考虑可重入性??
第3题 以下代码是否有误,运行效果如何?
typedef int MyType[16];
MyType myVar[16];
int main()
{
MyVar[1][2] =3;
printf("%d, %d, 0x%x, 0x%x/n",size(MyType), sizeof(myVar), &myVar[0], &myVar[1]);
return 0;
}
================
答案:
1 打印结果为 4, 100
因为无法前一个算的是那个变量的大小。
sizeof的值是在编译时确定的, 而非运行时,因此可以知道数组的大小~~
2. 每次调用重新分配~~~
3. 此题符合 C 语言语法。 MyType 为含有16 个item的 数组类型。
因此给myVar赋值应该如下:
MyVar[1][2] =3;
打印结果为 : 64,1024,。。。