C++ 指针作为函数参数
再一次,我偶然发现了一些我不能理解的基本路线的练习,也就是说我不能真正理解一些事情是如何运作的。我确实知道指针,但有时在我看来,我仍然缺乏一些基本的知识 在下面的示例中使用指针的意义是什么(在函数参数中,并将字符串类型数据与在函数InsertPerson中指出的字符类型数据进行比较) 让我这样说,我们有以下代码:C++ 指针作为函数参数,c++,pointers,C++,Pointers,再一次,我偶然发现了一些我不能理解的基本路线的练习,也就是说我不能真正理解一些事情是如何运作的。我确实知道指针,但有时在我看来,我仍然缺乏一些基本的知识 在下面的示例中使用指针的意义是什么(在函数参数中,并将字符串类型数据与在函数InsertPerson中指出的字符类型数据进行比较) 让我这样说,我们有以下代码: struct SPerson { string name; string surname; int age; }; priority_queue<S
struct SPerson
{
string name;
string surname;
int age;
};
priority_queue<SPerson, vector<SPerson>, FunkyFunctor> SuperPQ;
// ** THIS IS THE BIT OF CODE WHICH I'M HAVING PROBLEM WITH
void InsertPerson(SuperPQ &kp, const char *name, const char *surname, int age)
{
SPerson newPerson;
newPerson.name = name;
newPerson.surname = surname;
newPerson.age = age;
kp.push(newPerson);
}
int main(void)
{
SuperPQ superQUEUE;
InsertPerson(superQUEUE, "Jeremy", "Clarkson", 54);
}
struct SPerson
{
字符串名;
串姓;
智力年龄;
};
优先级队列;
//**这是我遇到问题的代码位
void InsertPerson(超级Q&kp,常量字符*名称,常量字符*姓氏,整数年龄)
{
斯珀森·纽珀森;
newPerson.name=名称;
newPerson.姓氏=姓氏;
newPerson.age=年龄;
kp.push(newPerson);
}
内部主(空)
{
超级队列;
InsertPerson(superQUEUE,“Jeremy”,“Clarkson”,54岁);
}
为什么我需要指针作为名为InsertPerson的函数中的函数参数,为什么我不能使用这些变量而不是它们的指针
提前感谢您的礼貌和任何易于理解的解释;)
干杯 字符串文字,即
“hello”
的类型为“n常量字符数组”(§2.14.5/8)。在某些情况下,数组被称为指向其第一个元素的指针。因此,const char
不适合接受需要字符串文字的参数。正如@Creris所提到的,因为您的数据成员是std::string
s,所以您不必使用const char*
,而是可以用const std::string&
替换它们 > P>数组必须由C和C++中的指针传递。这是因为函数参数只是一个值,数组和结构是多个值
因此,由于指针是单个值,因此可以在无法传递多个值的情况下传递它。它指向那些结构或数组
在机器代码级别上,这是因为函数调用约定在寄存器或堆栈中只有单个值的位置。您可以将其设置为
const std::string&name,const std::string&name