考虑这一段代码:指针在功能参数C++
char strName[25];
void SetInfo(char *strName)
{
strncpy(m_strName, strName, 25);
}
他们为什么使用指针中的函数参数?我们不能这样做:
void SetInfo(char strName[]) {
strncpy(m_strName, strName, 25); }
?两者有什么区别?
谢谢
考虑这一段代码:指针在功能参数C++
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;
}
两种呼叫来清点打印相同的字符“@”。
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();
}
我不确定这是否为标准。
它们是相同的。 – chris 2013-03-05 01:17:36