函数参数c ++中的指针

时间:2013-03-05 01:15:35

标签: c++ arrays pointers parameters arguments

考虑这段代码:

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

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

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

?两者有什么区别?

谢谢

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:-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();
}

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