考虑这段代码:
char strName[25];
void SetInfo(char *strName)
{
strncpy(m_strName, strName, 25);
}
他们为什么在函数参数中使用指针?我们不能这样做:
void SetInfo(char strName[]) {
strncpy(m_strName, strName, 25); }
? 两者有什么区别?
谢谢
考虑这段代码:
char strName[25];
void SetInfo(char *strName)
{
strncpy(m_strName, strName, 25);
}
他们为什么在函数参数中使用指针?我们不能这样做:
void SetInfo(char strName[]) {
strncpy(m_strName, strName, 25); }
? 两者有什么区别?
谢谢
在这种特殊情况下,根本没有(除了要输入的更多字母)。char 数组在传递给函数时“衰减”为指针。
当作为参数传递时,数组总是作为指针衰减。
在这种情况下,数组就像一个指针(它们指向数组第一个元素的内存)
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();
}
我不确定这是否是标准的。