-
其實,如果你讀過《C Expert Programming》,就很簡單,這個問題在上面已經詳細描述過了。 它儲存在記憶體中,如圖所示。 n[0][5] 實際上是 *(*n+0)+5),這是第六個單元格。
所以輸出是:y。 同樣,你會知道為什麼 n[0][6] 是 i。
第二個問題:因為從0開始,一共有11個,所以下標可以從0到10。 多維陣列實際上是陣列的陣列,char n[11][5]; 其實相當於儲存了11個字串,每個字串的長度是5個,所以只需要用乙個下標來引用。
例如,n[1] 的值實際上是指向"yi"指標。 n[1][4] 為什麼不 e,事實上,也是同樣的原因,這是留給你的練習。 提示:
字串'\0'結束。 希望對你有所幫助。
-
首先,我想提醒大家,a=0, b=5 和 a=0, b=6 已經溢位了,幸運的是,如果你有這種操作,在上面溢位的情況下,char n[11][5] 分配的空間並不是完全越界的。
n[11][5] = 0 那麼問題可能會變得更糟,C++ 多維陣列,理論上,編譯器最終會分配乙個段。
線性空間來容納由指定維度確定的資料,下標操作會自行計算出真正的偏移量,而你的溢位操作得到 y,因為編譯器在計算後實際上引用了 n 55*sizeof(char) 分配的空間的第 6 個元素,即"yi"Y、非常危險的操作請小心。
下面這幾個問題我不太明白。。。n[1][4] 是'\0'事實並非如此'e',你寫每個字串的方式對應乙個維度,所以讓我們向你展示記憶是什麼樣子的。
char [55] = 等價,所以更容易理解。
-
您可以按照以下步驟定義二維陣列和輸出:
1 定義乙個二維指標。
2 確定陣列維度數,即行數和列數。
3. 在行中應用多個 1D 指標大小空間,並為 2D 指標賦值。
4 對於每個一維指標,申請列中包含多個元素的空間,並為相應的一維指標分配乙個值。
5 輸入或分配資料。
6.採用雙迴圈,將儲存單元的範圍逐個輸出。
7 逐個釋放彈簧磨機上 1D 指標的記憶體。
8 釋放 2D 指標上的記憶體。
以整數二維陣列為例:
在下面的**中,首先輸入二維陣列的行數m和列數n,然後輸入m*n整數資料並儲存在動態二維陣列的基礎桶中。 最後,輸出所有 2D 陣列的元素值。
-
二維陣列有兩種方法可以為一維陣列賦值:
1 逐個為相應的目標元素賦值。
在所有情況下,您都可以自定義規則以迴圈訪問 2D 陣列,並為 1D 陣列的相應位置分配值。 一維陣列的偏移量是根據二維陣列的行和列值計算得出的,這部分演算法可以隨意設計,具有高度的靈活性。
例如,複製二維陣列的第一列稱為單獨的一維陣列,可以這樣寫:
int a[100][100], b[100];
int i;
二維陣列賦值操作可以寫在這裡,不管主題如何,省略。
for(i = 0; i < 100; i ++
b[i] = a[i][0];第一列是 0 列,C 下標以 0 開頭。
2 複製作為乙個整體。
二維陣列中的元素是連續儲存的,如果要將二維陣列中的一組連續資料分配給一維陣列,可以直接呼叫 memcpy 函式。 該函式在 cstring 中以 的形式宣告。
void* memcpy(void *dst, void *src, size_t length);
其功能是將長度位元組的資料從 SRC 位址複製到 DST 位址。
例如,如果將第二行和第三行(這兩行是連續的)複製到一維陣列中,則可以編寫:
int a[100][100],b[200];
賦值,省略。
memcpy(b,a[1],sizeof(b));複製作為乙個整體。
-
儲存整數的字元陣列,這些整數實際上是某個字元的 ASCII 程式碼,例如 41--a、42---b 等。 但是,如果超出了 ASCII 中可以顯示的字元範圍,則會顯示亂碼。
建議將 char b[3]; 更改為 char *b[3]。
-
char b[3];b 的元素是 char,而 456 和 789 是 char 型別的整數的溢位。
b 是 int 型別的陣列。
int b[3];
int i;
for(i=0;i<3;i++)
b[i]=100*a[i][0]+10*a[i][1]+a[i][2];
所以 b 就是這樣。
-
ptr=arr;
事實上,你可以這樣賦值,沒有問題。
由於 arr 是二維陣列的陣列名稱,因此它 636f707962616964757a686964616f31333264626539 (arr) 本身表示該二維陣列的第 0 行的位址。
關鍵不在這裡,而是在程式的 while 迴圈語句中,i++;
首先,ptr 指向乙個位址,所以 ptr+i 也是乙個位址,所以這裡不能使用位址運算子"&"完成。 第二個問題是 i 將自己從 0 加到 6,實際上有 7 個數字,這比 arr 陣列的長度長得多,這是不正確的。 這個週期的另乙個問題是,它本身就是乙個異常的週期(你自己想想)。
這是我幫你改變的**,希望對你有所幫助。
#include
void main()
-
i++;我不太明白這一點,我也是新手,我也遇到過這種情況,我在裡面是這樣做的:
#include
void main()
希望它對你有所幫助。
-
可以強行轉錄它。
Change,ptr=(double *)arr,但是你的程式還是有問題的:
更改為 while(i!=6 &&scanf("%lf", ptr+i))
-
for( i=0;i<2;i++)
for(j=0;j<3;j++)
scanf("l%f",a[i][j]);
我也是新手,不知道這樣做是否正確。
-
首先,C++ 中的陣列下標從 0 開始,這意味著你的陣列只能上公升到 knot[5][5],然後它越過邊界。
其次,使用 {} 初始化時,只能將值包含在 {} 中,不能包含單詞 knot[1][2]=。
按照你的意圖去做的正確方法應該是 int knot[6][6]=,
-
C++ 下標從 0 開始,所以你不能使用大於或等於 6 的下標,其次,它不是這樣分配的,你可以這樣做:
int arr[3][3] = ;
如果陣列中的每個初始值都相同,那麼你可以這樣做:
int arr[3][3] = ;
-
您可以按照以下步驟定義二維陣列和輸出:
1 定義乙個二維指標。
2 確定陣列中的維數,即行數和列數。
3. 在行中應用多個 1D 指標大小空間,並為 2D 指標賦值。
4 對於每個一維指標,應用列中多個元素的空間,並為相應的一維指標分配乙個值。
5 輸入或分配資料。
6.採用雙迴圈,將儲存單元的範圍逐個輸出。
7 逐個釋放 1D 指標上的記憶體。
8 釋放 2D 指標上的記憶體。
以整數二維陣列為例:
在下面的**中,首先輸入二維陣列的行數m和列數n,然後將m*n整數資料輸入到動態二維陣列中。 最後,輸出所有 2D 陣列的元素值。
-
使用雙迴圈就可以了:
#include
void main()
row, col;
printf("請輸入陣列元素的值(3 行和 4 列):n");
for (row=0; row<3; row++)for (col=0; col<4; col++)scanf("%d", &a[row][col]);
printf("您輸入的陣列為:");
for (row=0; row<3; row++)
-
1 定義乙個二維指標。
2 確定陣列維度數,即行數和列數。
3. 在行中應用多個 1D 指標大小空間,並為 2D 指標分配乙個值。
4 對於每個一維指標,請求列中多個元素的空間,並為相應的一維指標分配乙個值。
5 輸入或分配資料。
6.採用雙迴圈,將儲存單元的範圍逐個輸出。
7 逐個釋放 1D 指標上的記憶體。
8. 釋放 2D 指標上的記憶體以分配和輸出 2D 陣列元素。
-
二維陣列有兩種賦值情況:du
1. 定義時的初始分配。
int a[2][4]=,;2. 定義後,DAO 為陣列元素分配乙個值。
int a[2][4];
int i,j;
for( i=0;i<2;i++ 行}上述作業完成後,內容與初始作業相同。
二維陣列的輸出只能逐行遍歷二維陣列,每個元素可以逐個輸出。 如:
拿起前面**。
for( i=0;i<2;i++ 行 printf("");輸出一行後,顯示換行符}
-
這應該不是什麼大問題,但你也可以想一想,想一想。
-
用雙迴圈bai就可以了
#include
void main()
row, col;
printf("請輸入陣列元素的值(3 行 4 列):n");
for (row=0; row<3; row++)for (col=0; col<4; col++)scanf("%d", &a[row][col]);
printf("您輸入的 DAO 組編號為:");
for (row=0; row<3;行++)測試結果:
-
1.二維陣列是a[n][n]形式的a[n][n]陣列,第乙個n是行數,第二個daon是列數,即下標,例如,我想定義回乙個三。
三列整數二維陣列可以定義如下:int a[3][3]=;
2. 為了便於學習,我們將陣列抽象為以下形式 1 2 3
即三行三列資料,1 的位址為 a[0][0](注意陣列下標以 0 開頭),2 的位址為 a[0][1],第二行的位址為 a[1][x](0 < = x <= 2),依此類推。
3.所以取每個值只要給出對應的下標就取出值,例如,如果我想取出第二行第二列的資料,我可以取int b = a[1][1]; 賦值也是如此,例如,如果您需要為每個元素迴圈分配乙個值,則需要兩層 for 迴圈。
for(i = 0;i < 3; i++)
-
巢狀迴圈,有兩層迴圈就可以了。
二維陣列名稱 a 是指向指標的指標。 它也是乙個指標陣列名稱,其中包含 3 個元素,a[0]a[1],a[2]。 雖然 a 儲存的位址是陣列第乙個元素的位址,但它不是指向變數,而是指向指標。 >>>More
你好。 一開始,我們都是朋友,後來,我愛上了你,歌謠,唱著你給的甜蜜,最後,我失去了你。 >>>More
美國想中立這個國家,但他想平衡世界。
既然他不想吞併整個世界,美國可以把鋼鐵賣給日本,但它不會眼睜睜地看著德國和日本侵占整個世界,最終他會處於危險之中,美國聲稱自己是民主和自由的。 >>>More