#include<stdio.h>
#include<stdlib.h>
int main()
{
int a[ ] = { 0 };
//int a[10] = { 0 };
for (int i = 0; i < 10; i++)
{
printf("%d ", a[i]);
}
return 0;
}
列印出來為啥是:0 -858993460 77177290 5241112 19865779 1 8408400 8409552 1 8408400
而直接定義陣列長度就可以列印出來?如果想不先定義長度有準確的列印出來有什么辦法解決嗎?多謝!
uj5u.com熱心網友回復:
注釋反了。。把 int a[10] = {0} 注釋去掉即可。uj5u.com熱心網友回復:
#include<stdio.h>
#include<stdlib.h>
int main(int argc, char* argv[])
{
//int a[ ] = { 0 };
int a[10] = { 0 };//固定長度的陣列及初始化為 0
int m;
scanf("%d", &m);
int *b = new int[m]; //第一種動態長度陣列
int *c = (int *)malloc(sizeof(int) * m);//第二種動態長度陣列
memset(b,-1,m*sizeof(b));//初始化陣列b為 -1
memset(c,0,m*sizeof(c));//初始化陣列c為 0
//for (int i = 0; i < m; i++)//用回圈初始化陣列
// {
// b[i]=c[i]=0;
// }
for (int i = 0; i < m; i++)//當m>10時,a[10]以后顯示的就是不確定值,越界了
{
printf("a[%d]=%-15d\tb[%d]=%-15d\tc[%d]=%-15d\n",i,a[i],i,b[i],i,c[i]);
}
system("pause");
delete [] b; //動態釋放
b = NULL:
free (c);
c = NULL;
return 0;
}
uj5u.com熱心網友回復:
最后:號錯了,是‘;‘號,修改下。轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/234065.html
標籤:C語言
上一篇:是深入學C還是先學其他語言
下一篇:看看這道題吧
