C 開頭為二維陣列賦值的問題

發布 科技 2024-03-30
20個回答
  1. 匿名使用者2024-02-07

    其實,如果你讀過《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'結束。 希望對你有所幫助。

  2. 匿名使用者2024-02-06

    首先,我想提醒大家,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] = 等價,所以更容易理解。

  3. 匿名使用者2024-02-05

    您可以按照以下步驟定義二維陣列和輸出:

    1 定義乙個二維指標。

    2 確定陣列維度數,即行數和列數。

    3. 在行中應用多個 1D 指標大小空間,並為 2D 指標賦值。

    4 對於每個一維指標,申請列中包含多個元素的空間,並為相應的一維指標分配乙個值。

    5 輸入或分配資料。

    6.採用雙迴圈,將儲存單元的範圍逐個輸出。

    7 逐個釋放彈簧磨機上 1D 指標的記憶體。

    8 釋放 2D 指標上的記憶體。

    以整數二維陣列為例:

    在下面的**中,首先輸入二維陣列的行數m和列數n,然後輸入m*n整數資料並儲存在動態二維陣列的基礎桶中。 最後,輸出所有 2D 陣列的元素值。

  4. 匿名使用者2024-02-04

    二維陣列有兩種方法可以為一維陣列賦值:

    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));複製作為乙個整體。

  5. 匿名使用者2024-02-03

    儲存整數的字元陣列,這些整數實際上是某個字元的 ASCII 程式碼,例如 41--a、42---b 等。 但是,如果超出了 ASCII 中可以顯示的字元範圍,則會顯示亂碼。

    建議將 char b[3]; 更改為 char *b[3]。

  6. 匿名使用者2024-02-02

    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 就是這樣。

  7. 匿名使用者2024-02-01

    ptr=arr;

    事實上,你可以這樣賦值,沒有問題。

    由於 arr 是二維陣列的陣列名稱,因此它 636f707962616964757a686964616f31333264626539 (arr) 本身表示該二維陣列的第 0 行的位址。

    關鍵不在這裡,而是在程式的 while 迴圈語句中,i++;

    首先,ptr 指向乙個位址,所以 ptr+i 也是乙個位址,所以這裡不能使用位址運算子"&"完成。 第二個問題是 i 將自己從 0 加到 6,實際上有 7 個數字,這比 arr 陣列的長度長得多,這是不正確的。 這個週期的另乙個問題是,它本身就是乙個異常的週期(你自己想想)。

    這是我幫你改變的**,希望對你有所幫助。

    #include

    void main()

  8. 匿名使用者2024-01-31

    i++;我不太明白這一點,我也是新手,我也遇到過這種情況,我在裡面是這樣做的:

    #include

    void main()

    希望它對你有所幫助。

  9. 匿名使用者2024-01-30

    可以強行轉錄它。

    Change,ptr=(double *)arr,但是你的程式還是有問題的:

    更改為 while(i!=6 &&scanf("%lf", ptr+i))

  10. 匿名使用者2024-01-29

    for( i=0;i<2;i++)

    for(j=0;j<3;j++)

    scanf("l%f",a[i][j]);

    我也是新手,不知道這樣做是否正確。

  11. 匿名使用者2024-01-28

    首先,C++ 中的陣列下標從 0 開始,這意味著你的陣列只能上公升到 knot[5][5],然後它越過邊界。

    其次,使用 {} 初始化時,只能將值包含在 {} 中,不能包含單詞 knot[1][2]=。

    按照你的意圖去做的正確方法應該是 int knot[6][6]=,

  12. 匿名使用者2024-01-27

    C++ 下標從 0 開始,所以你不能使用大於或等於 6 的下標,其次,它不是這樣分配的,你可以這樣做:

    int arr[3][3] = ;

    如果陣列中的每個初始值都相同,那麼你可以這樣做:

    int arr[3][3] = ;

  13. 匿名使用者2024-01-26

    您可以按照以下步驟定義二維陣列和輸出:

    1 定義乙個二維指標。

    2 確定陣列中的維數,即行數和列數。

    3. 在行中應用多個 1D 指標大小空間,並為 2D 指標賦值。

    4 對於每個一維指標,應用列中多個元素的空間,並為相應的一維指標分配乙個值。

    5 輸入或分配資料。

    6.採用雙迴圈,將儲存單元的範圍逐個輸出。

    7 逐個釋放 1D 指標上的記憶體。

    8 釋放 2D 指標上的記憶體。

    以整數二維陣列為例:

    在下面的**中,首先輸入二維陣列的行數m和列數n,然後將m*n整數資料輸入到動態二維陣列中。 最後,輸出所有 2D 陣列的元素值。

  14. 匿名使用者2024-01-25

    使用雙迴圈就可以了:

    #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++)

  15. 匿名使用者2024-01-24

    1 定義乙個二維指標。

    2 確定陣列維度數,即行數和列數。

    3. 在行中應用多個 1D 指標大小空間,並為 2D 指標分配乙個值。

    4 對於每個一維指標,請求列中多個元素的空間,並為相應的一維指標分配乙個值。

    5 輸入或分配資料。

    6.採用雙迴圈,將儲存單元的範圍逐個輸出。

    7 逐個釋放 1D 指標上的記憶體。

    8. 釋放 2D 指標上的記憶體以分配和輸出 2D 陣列元素。

  16. 匿名使用者2024-01-23

    二維陣列有兩種賦值情況: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("");輸出一行後,顯示換行符}

  17. 匿名使用者2024-01-22

    這應該不是什麼大問題,但你也可以想一想,想一想。

  18. 匿名使用者2024-01-21

    用雙迴圈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;行++)測試結果:

  19. 匿名使用者2024-01-20

    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++)

  20. 匿名使用者2024-01-19

    巢狀迴圈,有兩層迴圈就可以了。

相關回答
12個回答2024-03-30

一維陣列具有相同的值,但在矩陣的情況下,行列式。 >>>More

8個回答2024-03-30

二維陣列名稱 a 是指向指標的指標。 它也是乙個指標陣列名稱,其中包含 3 個元素,a[0]a[1],a[2]。 雖然 a 儲存的位址是陣列第乙個元素的位址,但它不是指向變數,而是指向指標。 >>>More

25個回答2024-03-30

是徐松的家家情嗎?

歌詞:新月湖畔電影西餐那些夜晚。 >>>More

12個回答2024-03-30

你好。 一開始,我們都是朋友,後來,我愛上了你,歌謠,唱著你給的甜蜜,最後,我失去了你。 >>>More

31個回答2024-03-30

美國想中立這個國家,但他想平衡世界。

既然他不想吞併整個世界,美國可以把鋼鐵賣給日本,但它不會眼睜睜地看著德國和日本侵占整個世界,最終他會處於危險之中,美國聲稱自己是民主和自由的。 >>>More