函数形参中的指针
Pointer in function parameters c++
考虑这段代码:
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();
}
相关文章:
- 哪个模板形参在boost::shared_ptr构造函数中使用一个原始指针
- 如何在编译时通过模板形参默认值的名称/指针获取函数的类型
- c++中作为形参的指针
- 指向函数的指针vs作为模板非类型形参的函数
- 指向成员变量的引用/指针作为模板形参
- 用带有特定(double..)指针形参的void*函数重载函数
- 为什么模板非类型形参指针和引用实参需要是全局的
- c++形参是一个指向常量对象的指针,但不返回更新后的对象
- 函数指针的vector:不同的模板形参
- 重载在形参中接受指针的操作符
- 关于将指向数组的指针作为函数形参的混淆
- 为什么c++ 11 CAS操作使用两个指针形参
- 在c++中向指针形参传递值
- 将指向类成员的指针作为模板形参传递
- 具有指针引用模板形参的c++模板成员函数
- 在模板演绎中保持函数指针形参的完整类型
- 模板化形参的函数指针歧义
- 通过boost::thread传递const指针形参给函数
- 将std::string传递给指向C- string的指针形参
- 指针形参和数组形参有什么区别?