#define _CRT_SECURE_NO_WARNINGS #include//void test2() //{ // printf("hahan"); //} //void test1() //{ // test2(); //} //void test() //{ // test1(); //} //int main() //{ // test(); // return 0; //} main-->test-->test1-->return test2-->return test1-->return test-->return main 压栈 多多动手,尝试调试,才能有进步 //int main() //{ // int arr[10] = { 0 }; // int sz = sizeof(arr) / sizeof(arr[0]); // // int i = 0; // for (i = 0; i < sz; i++)//当循环次数很大时,可以设置条件断点,右击断点设置条件 // { // arr[i] = i + 1; // printf("%d ", arr[i]); // } // return 0; //} //运行时错误! //调试解决的是运行错误 //解决问题: //应该是什么结果-预期 //调试的时候发现不符合预期就找到问题了 //1+1!+2!+3!+...不考虑溢出 //int main() //{ // int n = 0; // scanf("%d", &n); // // int i = 0; // int ret = 1; // int sum = 0; // int j = 0; // for (j = 1; j <=n; j++) // { // //经过调试发现每一个i的循环结束,ret的值不会重置 // //ret=1,1*2=2,2*1*2*3=12 // //1+2+12=15 // for (i = 1; i <= j; i++) // { // ret *= i; // } // sum += ret; // } // printf("%dn", sum); // return 0; //} //int main() //{ // int n = 0; // scanf("%d", &n); // int ret = 1; // int i = 0; // // int sum = 0; // int j = 0; // for (j = 1; j <= n; j++) // { // ret = 1; // for (i = 1; i <= j; i++) // { // ret *= i; // } // sum += ret; // } // printf("%dn", sum); // return 0; //} //int main() //{ // //先定义i,再定义arr // int i = 0; // int arr[10] = { 1,2,3,4,5,6,7,8,9,10 }; // //0-9 // for (i = 0; i <= 12; i++) // { // arr[i] = 0; // printf("hehen"); // // } // //代码运行的结果是什么?代码死循环 // return 0; //} //int main() //{ // //先定义数组,再定义i,非法访问就会报错 // int arr[10] = { 1,2,3,4,5,6,7,8,9,10 }; // int i = 0; // for (i = 0; i <= 12; i++) // { // arr[i] = 0; // printf("hehen"); // } // return 0; //}
内存分布图像
1. i 和 arr 是局部变量
局部变量是放在栈区上的
栈区内存的使用习惯是:先使用高地址空间,再使用低地址空间
2. 数组随着下标的增长地址
是由低到高变化的



