读书人

指针用法的小疑点

发布时间: 2012-09-10 11:02:32 作者: rapoo

指针用法的小问题

C/C++ code
#include <stdio.h>void max_secondmax ( int a[], int n, int *max, int *second_max );int main(){ int n = 7; int *max=NULL,*second_max=NULL; int a[] = {1, 3, 5, 7, 53, 34, 12}; max_secondmax(a, n, max, second_max); return 0; } void max_secondmax ( int a[], int n, int *max, int *second_max ){ int i, da = a[0]; for(i = 0; i < n; i++){ if(a[i] > da)  da = a[i];  }  *max = da; /*这里有问题,具体见下文*/  printf("MAX: %d\n",da);  }


为什么这里面不能 *max = da;这样赋值(出现段错误)?
而是改成 max=&da;就能正常运行了?请问是什么原因?

[解决办法]
C/C++ code
int *max=NULL,*second_max=NULL;//max没有申请内存,是个野指针
[解决办法]
C/C++ code
int *max=(int *)malloc(sizeof(int)),*second_max=(int *)malloc(sizeof(int));
[解决办法]
改成上面的就好了
[解决办法]
还有申请完后记得释放内存···

读书人网 >C语言

热点推荐