函数形参中的指针

Pointer in function parameters c++

本文关键字:指针 形参 函数      更新时间:2023-10-16

考虑这段代码:

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

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

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

?两者的区别是什么?

谢谢

在这个特殊的例子中,什么都没有(除了多一个字母要输入)。当传递给函数时,字符数组"衰减"为指针。

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

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

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();
}