2017-04-04 52 views
0

嘿,大家好,我使用gcc作为我的编译器。我想将一个结构指针传递给一个函数,并修改指针(而不是if里面的内容)。我知道我可以这样做:不能声明指针'struct tm&

void addDate(int & *timeinfo, string &response); 

我试图做到这一点:

​​

当我这样做,我得到这个错误“不能声明指针“结构TM &”。我怎样才能做到这一点?是我做双指针的唯一选择吗?我知道那并不坏,但我喜欢尽量避免这些。

+3

如果你想引用指针,使用'*&',而不是'&*'。 – aschepler

回答

1

struct tm是一种类型。

struct tm & timeinfo意味着timeinfo引用了该类型的变量。

struct tm * timeinfo表示timeinfo是指向该类型的变量(可能存在也可能不存在)的指针。

struct tm * & timeinfo意味着timeinfo是对变量(存在)的引用,恰好是指向类型为struct tm的变量(可能存在也可能不存在)的指针。

struct tm & *意味着什么。你不能有一个指向引用的指针,因为引用本身不是一个变量,指针指向变量。

注意:当我说“可能存在也可能不存在”时,我的意思是变量可能会或可能不会被分配到内存中。