c++程序问题疑问

来源:百度知道 编辑:UC知道 时间:2024/06/20 09:24:43
#include<iostream>
#define maxline 100
using namespace std;
int maxindex(int a[],int* index)
{
int k=0,n;
do{
cout<<"please input the number";
cin>>n;
*index=0;
}
while(n>99);
for(int i=0;i<n;i++)
cin>>a[i];
for(i=0;i<n;i++)
if(a[k]<a[i]) k=i;
*index=k;
return a[*index];

}
int main()
{
int A[maxline];
int maxdata,index;

maxdata=maxindex(A,&index);
cout<<maxdata<<','<<index;
return 0;
}
当我把*index=0;去掉之后,问什么,index是一个随机值
我说错了,是改为index=&n之后

你的n的生存期是在int maxindex(int a[],int* index)中,调用完变量n就被释放了。再调用函数后index=&n使得index指向的变量已经被释放了,这样用很不安全。
调用函数maxdata=maxindex(A,&index),参数是值传递,这句index=&n使得参数值向另一个值了,而所指向的这个变量已经被释放了,

同上,n的作用域只在maxindex下,离开maxindex函数,变量n地址储存的东西就丢弃了

ku a