一个指针问题

来源:百度知道 编辑:UC知道 时间:2024/09/25 11:37:38
void Func(char str[100])
{
sizeof(str) = ?
}
char* p = new char[100];
sizeof(p) = ?
为什么?

函数参数为数组时,实际传递的是指向数组的指针。

对指针求sizeof运算,等到的是指针类型的大小,在多数机器上这个值等于sizeof(int)。

在本例中,Func的定义完全等价于
void Func (char * str) {/* ... */}
因而sizeof(str) == sizeof(char *)是指针大小,而不是数组大小。

类似地,char * p = new char[100];
这里尽管分配了一段空间,由p指向它,但p指针本身的大小仍然是不变的,也是sizeof(char *),而不是sizeof(char) * 100。

注意,只有当直接对数组名或其引用做sizeof运算时,才得到数组元素 * 个数的大小。

study