首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

指针用法的小疑点

2012-09-10 
指针用法的小问题C/C++ code#include stdio.hvoid max_secondmax ( int a[], int n, int *max, int *sec

指针用法的小问题

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));
[解决办法]
改成上面的就好了
[解决办法]
还有申请完后记得释放内存···

热点排行