我很困惑C,因为我是新手.我知道1.1给了我最大值,1.2给了我最大值变量地址[ 图片 ]. 我的问题是如何在main中调用*findmax函数?
int * findMax(int *a,int SIZE){
int i,max=*a,address,add;
for(i=0;i<SIZE;i++){
if(max<*(a+i)){
max=*(a+i);
}
}
//printf("maxium value is %d at index %x",max,&max);
return &max;
}
Run Code Online (Sandbox Code Playgroud)
该*函数定义不是一个函数指针,它是函数的返回类型.该findMax函数返回一个指向整数的指针.所以你可以像在main中的任何其他函数一样调用它:
int a[] = {1,2,3,4};
int *p = findMax(a, 4);
Run Code Online (Sandbox Code Playgroud)
还有一个问题,在你的findMax函数中,你返回一个指向局部变量的指针,当函数返回时,变量的存储将不再可用.使用它会导致未定义的行为.所以你只需要将整数作为整数返回,如果你真的需要返回一个指针,你应该分配它,或者返回一个保持有效的指针.
例如:
int* findMax(int *a,int SIZE){
int i;
int *max = a;
for(i=0;i<SIZE;i++){
if(*max<*(a+i)){
max=a+i;
}
}
return max;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
47 次 |
| 最近记录: |