gpt4 book ai didi

c++ - 双数组 C++ 中的 NULL(示例)

转载 作者:行者123 更新时间:2023-11-30 04:13:38 26 4
gpt4 key购买 nike

double calculateAverage(double *a);

int main(){

double *dArray;
int n, m;

cout<<"\nplease enter the size of the array: ";
cin>>n;
dArray = new double[n];

for(m=0; m<n; m++){
cout<<"\nplease enter the number: ";
cin>>dArray[m];
}
*(dArray+m+1) = NULL; // i add this, so for the address after m+1 to be NULL

cout<<"\n the average of the array is : "<<calculateAverage(dArray)<<endl;

system("pause");
return 0;
}


double calculateAverage(double *a){
double total = 0;
int iCounter = 0;
while(*a!=NULL){ // here is the problem!! why it can't be NULL or 0 or empty? // edit from a to *a
total = total+*a;
a++;
iCounter++;
}

return total/(iCounter-1); //here edit, from iCounter to iCounter-1
}

我想知道为什么指针不指向 NULL ?谁能告诉我代码哪里出错了?

谢谢。

错别字,在数组分配循环 block 中应该是“n”而不是“nn”。

最佳答案

你不能保证数组末尾的 NULL 终止符,事实上在 C++ 中没有这样的东西,除非你自己使用特定的标记(并且在某些情况下使用 字符*)。此外,在您的具体情况下,您所做的事情毫无意义。

指针是地址,你做的只是增加地址,怎么变成NULL呢?从实际的角度来看,假设您将地址 a == 0x12345678 传递给函数,当您执行 ++a 时,您只需将其增加 sizeof(double ),这不会变为零(除非可能溢出)。

因为它是 C++,所以只需忘记数组并使用 std::vector(或者如果您真的想使用标准数组,将长度作为参数传递给 calculateAverage 函数).

关于c++ - 双数组 C++ 中的 NULL(示例),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19353031/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com