Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/155.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 指针作为函数参数_C++_Pointers - Fatal编程技术网

C++ 指针作为函数参数

C++ 指针作为函数参数,c++,pointers,C++,Pointers,再一次,我偶然发现了一些我不能理解的基本路线的练习,也就是说我不能真正理解一些事情是如何运作的。我确实知道指针,但有时在我看来,我仍然缺乏一些基本的知识 在下面的示例中使用指针的意义是什么(在函数参数中,并将字符串类型数据与在函数InsertPerson中指出的字符类型数据进行比较) 让我这样说,我们有以下代码: struct SPerson { string name; string surname; int age; }; priority_queue<S

再一次,我偶然发现了一些我不能理解的基本路线的练习,也就是说我不能真正理解一些事情是如何运作的。我确实知道指针,但有时在我看来,我仍然缺乏一些基本的知识

在下面的示例中使用指针的意义是什么(在函数参数中,并将字符串类型数据与在函数InsertPerson中指出的字符类型数据进行比较)

让我这样说,我们有以下代码:

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