qq_阮_0
2019-10-28 11:48
#include <stdio.h> void getCount( int arr[]); void getUp( int arr[]); int main(){ int score[10]={67,98,75,63,82,79,81,91,66,84}; getCount(score); getUp(score); //return 0; } void getCount( int arr[]) { //这里声明变量 但不赋值; int count; for(int i=0;i<10;i++) { count += arr[i]; } //输出正常,count 默认给的0; printf("总分数为%d\n",count); } void getUp( int arr[]) { //这里也声明变量不赋值; int up; for(int i=0;i<10;i++) { printf("up = %d\n",up); if(i+1 > 9) break; if(arr[i] > up) { up = arr[i]; } //输出异常,up默认值为上面的count值 786.。。。。求解 printf("最高分为%d\n",up); }
求解 如果在C里面 声明 int 变量而不赋值 默认值不应该是0么
定义局部变量,其实就是在栈中通过移动栈指针来给程序提供一个内存空间和这个局部变量名绑定。因为这段内存空间在栈上,而栈内存是反复使用的(上次用完没清零的),所以说使用栈来实现的局部变量定义时如果不显式初始化,值就是不确定的。
C语言入门
926207 学习 · 20797 问题
相似问题