
在主函式中對一個陣列賦值可以這樣操作:a[10]={0,0,0,0,0,0,0,0,0,0};
但為什么在int *get(int *p,int *b, int n)函式中無法這樣直接賦值(會顯示初始值設定項值太多),是不是因為*b這個指標變數只能存放陣列的首地址。
但如果是這個原因的話,為什么用for回圈的方法卻可以正常賦值,for回圈方法不也是在陣列中賦值嗎
uj5u.com熱心網友回復:
{ 0, 0, ... } 這個叫初始化串列,只有在你宣告一個物件的時候才能用,例如 int a[] = { 0, 0, 0 }; 其他地方用了會報語法錯誤。這里用回圈的方法或者 memset 清 0 即可。uj5u.com熱心網友回復:
我感覺定義函式時int *get(int *p,int *b,int m)時相當于已經定義了陣列,而b[10]={0,0,0.......}相當于賦值,眾所周知,陣列賦值需要回圈,而b[10]={0,0,0.......}相當于給b[10]這一個元素付了10個值,所以不對,不知道這么理解對不對
uj5u.com熱心網友回復:
你可以這樣嘛
void fpp(int* b)
{
struct pp{ int a[10]; };
*(pp*)b = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
}
uj5u.com熱心網友回復:
簡單的說,b[10]={}這樣的方式相當于給下標為10陣列元素地址賦值(宣告陣列時除外),很顯然,左邊是整形,右邊是陣列串列,型別不匹配不能賦值。如果b是二維陣列,那么b[10]就是下標為10的一維陣列,那么就可以賦值。uj5u.com熱心網友回復:
初始化是在定義的時候初始化,初始化才能一股腦賦值,之后的賦值必須按正常賦值規則來賦值,你的get函式里面b的賦值是正常賦值,所以不能像你期望的那樣賦值轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/148855.html
標籤:C語言
上一篇:哪個兄弟會!!!跪求
