1樓:匿名使用者
struct point;
point* p1 = (point*)malloc(你需要的數目*sizeof(point));
完全不需要3維陣列, 一個結構加個指標就可以了.
c語言中三維陣列的賦值問題
2樓:匿名使用者
int limit[4][5][2]=, , , , ,, , , , ,
, , , , ,
, , , , };
你這樣定義是:int limit[20][2]。int limit[4][5][2]應該是
int limit[4][5][2]=, , , , },, , , , },
, , , , },
, , , , } };
c語言 三維陣列初始化
3樓:59分粑粑
方法和詳細的操作步驟如下:
1、第一步,需要定義陣列。
陣列的常見型別是int,float,char等,可以通過輸入進行定義,見下圖,轉到下面的步驟。
2、第二步,執行完上面的操作之後,陣列的名稱可以自定義,見下圖,轉到下面的步驟。
3、第三步,執行完上面的操作之後,陣列的大小是在陣列定義階段確定的,輸入數字是陣列的大小,見下圖,轉到下面的步驟。
4、第四步,執行完上面的操作之後,可以初始化陣列並將其輸入到大括號{}中,見下圖,轉到下面的步驟。
5、第五步,執行完上面的操作之後,如果初始輸入數字未達到定義的長度,則預設初始化為0,見下圖,轉到下面的步驟。
6、第六步,執行完上面的操作之後,在陣列定義和初始化之後新增一個分號,單擊enter鍵即可,見下圖。這樣,就解決了這個問題了。
4樓:匿名使用者
例如:int a[3][2][4] =
, },
, },
, }};
c語言、三維陣列
5樓:bc警長
先說二維,可以這麼理解:
int n[3]有3個int
那麼,int m[5][3]有5個int[3]賦值時:
n[1]=3把3給1號
m[4]=m[4]是個int[3]型別,這麼賦值,也就是這麼賦值:
m[4]的[0]是5:m[4][0]=5
m[4][1]=9
m[4][2]=4
懂了嗎?三維甚至更多維大同小異,比如
int k[4][5][3]有4個int[5][3]這個概念應該不難理解的,就是各種型別,不停的加下標,加下標,加下標,下標,標……
曾寫過一個模擬7段碼(看看紅綠燈上的倒計時是怎麼顯示的),共有2行顯示,每行10個數字,每個數字7段,整個系統狀態就是用一個bool[2][10][7]確定的
6樓:夢中夢
在c語言中,多維陣列的存放規律都是第一維下標變化的最慢,越往後維數越高,下標變化越快,例如:對於三位陣列a[2][2][2],其賦值順序就是:
a[0][0][0]
a[0][0][1]
a[0][1][0]
a[0][1][1]
a[1][0][0]
a[1][0][1]
a[1][1][0]
a[1][1][1]
總結的說,就是「維數最高優先儲存」
至於什麼情況用三維陣列,這要看你程式設計思想了,當你想編的程式抽象成三維的東西,就用三維陣列來表示,就如矩陣似的,我們把矩陣看成是一個圖,二維的,所以用了二維陣列
希望可以幫助你
7樓:匿名使用者
三維陣列和二維陣列一維陣列一樣啊,使用的時候用3個下標,下標的起點也是0
初始化也就是二維陣列的推廣,因為是行序優先存放,所以沒有完全初始化的後面的元素自動賦初值0
如果有三個控制量就用三維陣列啊,比方是三維空間xyz
8樓:燕曉
這個得需要計算機專業知識才行。
c語言:三維陣列賦值給二維陣列,為什麼可以這樣?裡面的數值不會改變了嗎?
9樓:
你的陣列a其實仍然是二維陣列,因為你給的值顯然是一個二維陣列的值即1,2,3
3,2,1
2,5,6
你並沒有真正做一個三維陣列,所以賦給二維陣列完全沒問題,陣列b的值仍然是像上面那樣的形式
如何對三維字元陣列賦值
10樓:匿名使用者
只用前二維指定位置:
gets(a[0][0]);
gets(a[0][2]);
你可以將這個三維(n維)字元陣列想像成一個有string型別變數(假設c中也存在string型別)的二維(n-1維)的陣列。
也就是說,這個a陣列中共有2*3=6個長度為8的字元陣列,分為2行3列。
11樓:傲世修羅王
#include
void main()}}
getchar() ;
}不能用gets,它是獲取字串的
12樓:冷月照西風
#define high 10
#define mid 9
#define low 8
char str[high][mid][low];//定義三維陣列int i,j,k;//定義迴圈變數
//最常用的多重for迴圈實現
for(i=0;i for(j=0;j for(k=0;k scanf("%c",&str[i][j][k]); 13樓:討厭閃耀生物 對於char a[2][3][8]; 輸入:gets((char *)a); a本身是第一個字元的地址,強轉一下就好。 c語言中三維陣列怎樣初始化為0 14樓:曠野行風 memset(void*p,int ch,size_t n)函式功能:以指標p指向的記憶體空間為起始,將其後n個位元組的空間全部賦值為ch.該函式標頭檔案為或 使用該函式初始化陣列為0 #include #include void main() 執行結果 15樓:匿名使用者 陣列可以初始化 用一個簡單的測試程式就可以明白了 #include void main() ;for(int i=0;i<10;i++)for(int j=0;j<10;j++)for(int k=0;k<10;k++)printf("a[%d][%d][%d]:%d\n",i,j,k,a[i][j][k]);} 16樓:天——天 #include "windows.h" void main() 我在vs2005下執行的 或者在定 義的時候進行,如int a[3][10][10] = ;即可 17樓:匿名使用者 可以,當初始化器中的值少於元素數量時,剩餘部分元素值都被初始化為0 18樓:匿名使用者 除錯一下不就知道了。 我試過了,可以的。 從理論上講,a[10][10][10]=將x賦值給a[0][0][0](此處x=0),其他元素電腦將隨著這個語句被賦值0 好像沒有什麼直接的辦法,只有使用迴圈語句來判斷最後一個出現的非0值為最後一個元素,也就是說如果你初始化為1,2,3,0,4,5這樣有辦法判斷,但若初始化為1,2,0,3,0,0就沒辦法判斷了,只能判斷到3,因為3是最後一個非0值。因為系統預設會把其他部分都初始化為0,所以沒有辦法判斷 沒有賦值的元素... 可以,但不能是靜態陣列如int a 50 左邊分配在堆疊上,分配在堆疊上的變數 不能在編譯時不知道分多少空間,並且分了多少空間就是多少。如果想讓陣列大小動態分配,可以使用下面做法,記得用完要free int a int malloc n sizeof int n是陣列的大小。或者這樣calloc函式... 就是指向每一行的指標,比如說二維陣列a 2 3 a 0 代表的是二維陣列第零行的首地址相當於 a 0 0 a 1 代表的是二維陣列第一行的首地址相當於 a 1 0 a 0 1代表的是二維陣列第零行,第一列的地址相當於 a 0 1 行指標其實就是二級指標,也就是說它指向一個一維陣列,int a 2 3...C語言 給陣列中的元素賦值
c語言中陣列動態增長有哪些方法,c語言 一維陣列如何增加長度
c語言中二維陣列行指標是什麼,C語言中二維陣列行指標是什麼