0

考虑这段代码:

char strName[25]; 
void SetInfo(char *strName) 
{ 
strncpy(m_strName, strName, 25); 
} 

他们为什么在函数参数中使用指针?我们不能这样做:

void SetInfo(char strName[]) {
strncpy(m_strName, strName, 25); }

? 两者有什么区别?

谢谢

4

2 回答 2

1

在这种特殊情况下,根本没有(除了要输入的更多字母)。char 数组在传递给函数时“衰减”为指针。

于 2013-03-05T01:18:13.510 回答
-1

当作为参数传递时,数组总是作为指针衰减。

在这种情况下,数组就像一个指针(它们指向数组第一个元素的内存)

void foo(char a[])
{
    a[0] = '@';
    cout << a[0];
    cout << *a;
}

对 cout 的两个调用都打印相同的字符“@”。

void foo(char a[])
{
    // gives you the size of a pointer to the array's data type.
    // prints 4
    sizeof(a);

    // prints char *
    cout << typeid(a).name();
}

我不确定这是否是标准的。

于 2013-03-05T01:29:26.800 回答