考虑这段代码:
char strName[25];
void SetInfo(char *strName)
{
strncpy(m_strName, strName, 25);
}
为什么他们在函数参数中使用指针?我们不能这样做:
void SetInfo(char strName[]) {
strncpy(m_strName, strName, 25); }
?两者有什么区别?
谢谢
答案 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();
}
我不确定这是否是标准的。