我有以下功能:
void printKMax(int arr[], int n, int k){
int* start = &arr[0];
int* run = new int();
if(n > 1){
int* run = &arr[1];
cout << "Initial run pointer " << *run << endl;
}else {
cout << *start << endl;
return;
}
for(int i = 0; i < k-1; i++){
cout << "Run in for loop " << *run << endl;
}
delete run;
}
输入 arr = {3 4 6 3 4}
和 k = 4
。
首先 cout 打印 4
,而 for loop cout 打印三次 0
。为什么它给出 0
而不是 4
?为什么在 for 循环中取消引用指针与在 if 语句中不同?
最佳答案
在这个声明中
int* run = new int();
有声明的指针 run
指向由零初始化的动态分配的内存。
循环中使用的变量
for(int i = 0; i < k-1; i++){
cout << "Run in for loop " << *run << endl;
}
if语句中声明的另一个同名指针
if(n > 1){
int* run = &arr[1];
在 if 语句之外不存在。
关于c++ - 为什么指针在for循环中返回0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42508169/