在函数签名中使用*和(&A) 我玩C++,试图理解向量及其签名。 在下面的方法printPrimes中,我需要使用带地址的指针,为什么
向量和素数不够,因为从主方法printPrimes已经发送了地址在函数签名中使用*和(&A) 我玩C++,试图理解向量及其签名。 在下面的方法printPrimes中,我需要使用带地址的指针,为什么,c++,pointers,C++,Pointers,向量和素数不够,因为从主方法printPrimes已经发送了地址 void printPrimes(long long l, long long r, vector<int>* &primes) { // some code } vector<int>* sieve() { vector<int> *prime = new vector<int>(); return prime; } int main() { vector
void printPrimes(long long l, long long r, vector<int>* &primes) {
// some code
}
vector<int>* sieve() {
vector<int> *prime = new vector<int>();
return prime;
}
int main() {
vector<int> *primes = sieve();
printPrimes(l, r, primes);
return 0;
}
我需要使用地址为的指针
此处,&不表示的地址;它表示对的类型引用
如果你不是这样写的话会更清楚:
vector<int>* &primes
vector<int>*& primes
我需要使用地址为的指针
此处,&不表示的地址;它表示对的类型引用
如果你不是这样写的话会更清楚:
vector<int>* &primes
vector<int>*& primes
< C++ >函数参数,用于按引用传递参数。向量*&素数声明素数是指向向量指针的引用
如果printPrimes表示只打印传递给函数的向量,则签名
void printPrimes(long long l, long long r, vector<int> &primes);
如果功能条正在调用foo-like
foo正在修改指针本身,这种修改也将在bar上看到,并且可以从bar访问分配给p的内存在C++和函数参数中使用P> > P>参数。向量*&素数声明素数是指向向量指针的引用
如果printPrimes表示只打印传递给函数的向量,则签名
void printPrimes(long long l, long long r, vector<int> &primes);
如果功能条正在调用foo-like
foo正在修改指针本身,这种修改也将在bar上看到,并且可以从bar访问分配给p的内存 向量*&primes参数必须按以下方式读取:
指向int向量指针的引用
而不是
向量为int的指针的地址,你是对的,它是无用的
通过引用传递可以像使用指针一样直接操作范围外的任何实例,但这是一种更安全的方法,因为引用不能为null ptr,并且它的存在是自动管理的,无需删除。向量*&primes参数必须以这种方式读取:
指向int向量指针的引用
而不是
向量为int的指针的地址,你是对的,它是无用的
通过引用传递可以像使用指针一样直接操作范围外的任何实例,但这是一种更安全的方法,因为引用不能为null ptr,并且它的存在是自动管理的,无需删除。在下面的方法printPrimes中,我需要使用带有地址的指针,为什么?在C++函数中,函数参数是指引用,而不是C中的地址,所以你给出了指向这个函数的指针的引用。使用双指针也可以达到类似的效果,除了调用函数时需要使用&来获取指针的地址。为什么我需要使用reference和*together声明向量*&primes声明primes是指向int元素向量指针的引用。如果要更改指针指向的位置,可能需要它。虽然你不需要这么做,所以停止使用指针。@ MsAlter语句是C++中的一种,也可以是引用,而在C中,当你使用A时,它只被用来获取某物的地址。在下面的方法中,我需要使用指针来说明为什么?在C++函数中,函数参数是指引用,而不是C中的地址,所以你给出了指向这个函数的指针的引用。使用双指针也可以达到类似的效果,除了调用函数时需要使用&来获取指针的地址。为什么我需要使用reference和*together声明向量*&primes声明primes是指向int元素向量指针的引用。如果要更改指针指向的位置,可能需要它。虽然你不需要这么做,所以停止使用指针。@ MsAlter语句是在C++中,也可以是引用,而在C中,当你使用A时,它只被用来获取某物的地址。