#include "stdafx.h"
#include <iostream>
using namespace std;
int a[3] = {1,2,3};
void main()
{
cout << a << endl;
}
#include "stdafx.h"
#include <iostream>
using namespace std;
int a[3];
void main()
{
a[3] = {1,2,3};
cout << a << endl;
}
請問這兩組代碼有什么區別,為什么第二組會出錯
編譯給出的報錯如圖


難道陣列不能這樣賦值嗎,(請不要舉for回圈的例子,這里1 2 3只是隨便寫的,不一定有規律)另外可以直接輸出陣列a嗎,為什么第一組代碼編譯通過的顯示的結果是這樣

uj5u.com熱心網友回復:
int a[3] = {1,2,3};這個[3]表示陣列的個數; a[3] = {1,2,3};這個[3]表示下標三
uj5u.com熱心網友回復:
第一種方式:#include "stdafx.h"
#include <iostream>
using namespace std;
int a[3] = { 1, 2, 3 };
void main()
{
for (int i = 0; i < 3; i++)
cout << a[i] << endl;
}
第二種方式:
#include "stdafx.h"
#include <iostream>
using namespace std;
int a[3];
void main()
{
for (int i = 0; i < 3; i++)
a[i] = i+1;
for (int i = 0; i < 3; i++)
cout << a[i] << endl;
}
uj5u.com熱心網友回復:
“變數賦值”和“變數初始化”不是一回事!“變數賦值”發生在運行期,其寫法遵循賦值語法規定。
“變數初始化”發生在編譯期或運行期,其寫法遵循初始化串列語法規定。
uj5u.com熱心網友回復:
int a[3]是定義陣列,a[3]是指a[3]這個元素,你說有何區別uj5u.com熱心網友回復:
打醬油,漂過uj5u.com熱心網友回復:
要輸出陣列要用for回圈for (int i = 0; i < 3; ++i)
cout << a[i] << endl;
uj5u.com熱心網友回復:
陣列只有初始化的時候可以使用大括號方式的語法,你第二段代碼不能這樣用,只能一個元素一個元素的賦值uj5u.com熱心網友回復:
哈哈,我也犯了這個低級錯誤
uj5u.com熱心網友回復:
第一段輸出的是陣列a的首地址值,相當于&a[0]的值。轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/253616.html
標籤:C語言
上一篇:C++函式值傳遞
