C++ - 指针函数参数

标签 c++ arrays pointers

我在这里问了一个问题:C++ - class issue

我仍然没有得到的是此处的指针参数:

void setInfo(char *strName,int id,double wage)

它被调用的地方:

abder.setInfo("Abder-Rahman",123,400);

我知道数组的名字是一个指针。但是,为什么我们必须要有一个指针数据类型呢?我们不能在函数参数列表中使用 char[] 吗?因为我认为我在尝试时遇到了错误。

谢谢。

最佳答案

But, why should we have to have a pointer data type?

因为在编译函数时需要知道函数参数的大小。 IE。该函数需要知道内存中的参数列表有多远才能找到 idwage

Cannot we use a char[] in the function parameter list?

是的,你可以,但它仍然是通过指针传递的。数据作为数组的一部分而具有的任何附加属性(例如 sizeof() 返回数组的总大小)都不会保留在被调用函数中。在函数签名中使用 [] 的能力只是向您表明传递的项目应该是某种类型的数组(而不是指向结构的指针)。

关于C++ - 指针函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4773334/

相关文章:

c++ - 初始化无法从const char [3]转换为std::string *

C# 为什么 Array.IndexOf 返回 -1

c++ - 为什么 std::generate 可以在没有命名空间限定符的情况下访问?

c++ - 通过用户定义的转换复制类类型的初始化

php - 如何在php mysql中保存多个序列化数据

c - K&R : array of character pointers

pointers - 在 golang 文本/模板中取消引用指针

pointers - 为什么Fortran POINTER需要一个TARGET?

c++ - 如何在 Qt Creator 中使用英特尔 C++ 编译器

python - 根据 lambda 函数将 NumPy 整数列表值映射到列表