指多維陣列中列數的控制 5

發布 科技 2024-08-21
12個回答
  1. 匿名使用者2024-02-01

    多維陣列本質上是一維陣列,因此可以用一級指標和步長的組合來求解,如下所示:

    #include

    int sun[4][7]=,6,8,33,44,46,34},33,66,12,34,56,676},45,132,453,545,434,1,44}};

    int main()

    int i,j;

    int* p;

    for(p=(int*)&sun[0];p<(int*)&sun[4];p+=7) 強制轉換,然後將步長遞增到列數。

    p=0;for(j=0;j<4;j++)

    printf("");

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

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

    由於你對太陽陣列的定義,第二維是 7;

    int sun[4][7]

    如果定義指向陣列的指標,則列數至少為 7,否則是錯誤的。

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

    p 是指向乙個 int 陣列的指標,陣列大小為 7,那麼這個指標可以訪問的範圍是從陣列位址開頭到 +7 的位置,如果陣列大小定義為 4,那麼指標 p 的有效訪問範圍是 +4,訪問就會越界。

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

    書中提到的行指標和列指針對你來說很容易理解,但實際上,C語言中並沒有行指標和列指標的概念。 線指標是指向乙個陣列的指標,例如,如果有乙個二維陣列 int a[10][20],那麼 a 可以用作線指標,但它的型別是乙個陣列,可以自動轉換為 int (*a)[20],即指向長度為 20 的陣列的指標。 由於它是乙個指標,*p 是它指向的內容,所以 *p 是乙個 20 長度的陣列,稱為列指標。

    行指標和列指標根本不是同一型別,它們不能相互指向,同一行和同一列沒有任何意義,就像你和同學的生日一樣,只是巧合。 如果真的有問題,可以拿出來,看看可以用什麼方法解決。

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

    這是二維陣列的行位址和列位址的問題。

    對於二維陣列,有行位址和列位址以及具體元素,行位址——列位址———具體元素,它們的秩降低, a[3][3],如果要宣告指向陣列 a 的指標,應該是 int **p,或者 (*p)[3],第乙個是宣告二級指標,因為二維陣列的陣列名稱是二級指標, 第二個是宣告乙個指向具有 3 個元素的 1 位陣列的指標,它們都可以執行此 p=a。 對於二維陣列 a 是行位址,取 * 成為列位址,取 * 對列位址成為具體元素。 所以取 * 是降級操作。

    你的第乙個問題,因為 p 是二級指標,把 * 帶到 p 就變成了一級指標,他們不能賦值,等號和左右一定是同一級別,你知道的。

    第二個問題是,取 * 或下標 [ ] 作為行位址會使行位址變成列位址,如果內容被取,列位址會變成行位址,但這個值對於取 * 下標後的二維陣列還是有意義的。

    應該對你有所幫助......

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

    下面是乙個示例,您將了解:

    假設乙個陣列 a[3][7],即乙個 4 行 8 列的矩陣,每行 8 (0-7),總共 4 (0-3) 行。

    指定乙個元素,例如 a[2][5],並根據上述公式替換 =a[0]+2*7+5

    a[2][5] 是什麼意思,是第 3 行 a[0]+2*7+5 的第 6 個元素是什麼意思,即從第 0 行和第 0 列開始計數,經過前 2 行 (2*7),然後經過 5 個數字 (5),現在到達第 3 行的第 6 個數字。 這正是 a[2][5] 所在的地方。

    明白了?

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

    a[0] 是表示 a[0][0] 位址的列位址,i*n+j 是第乙個元素之後的元素,兩者相加即為任意元素 a[i][j] 的位址。

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

    不矛盾。 需要注意的是,zippo[0] = zippo 只是意味著它們在數值上相等,就像 100 和 100 個框在數值上等於 100 一樣。

    但是 zippo[0] 是指向 int 的指標,zippo 是指向簡單指標的指標,通過 zippo[0] 系統知道它是一維指標,所以可以得到一維陣列,而 zippo 是二維的,系統可以得到乙個二維陣列,但無論多維,它們都是從同乙個記憶體位址開始的。

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

    房東:)這裡我畫了一張一旦山脊燒掉的記憶圖,你可以通過看虛來理解它——在簡化過程中,假設它是這樣乙個二維陣列,你要注意一件事:zippo[0] 不等於 zippo[0][0]!

    從圖中可以看出,zippo[0] 實際上是第一行(第一行還有兩個單元格)。 所以 zippo 只是乙個“行條目位址”——如果預設情況下,那麼 c 或 c++ 預設 zippo=zippo[0]=&zippo[0][0],如 **: include 所示

    #includeint main()

    system("pause");

    親眼看看,這三個印刷的數字是一回事嗎?

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

    相同的位址和山校盲人並不意味著去引號*後得到的值是一樣的,因為兩種型別不同,所以決定理解引用後羨慕嶺的逗號值不同,zippod 的型別是 int [4][2],而你的 zippo[0] 的型別是 int [2]。

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

    假設 a[3][5] 的記憶體布局如下:

    a、a[0] 和 a all 指向陣列的記憶體塊的第乙個位址(3*5*4=60 位元組)。

    a 的型別是乙個二維陣列,它指的是整個記憶體塊的第乙個位址,即 0 處的位址。

    型別 a[0] 是乙個一維陣列,它指的是儲存器塊 0 1 2 3 4 的第乙個位址,它也是 0 處的位址。

    A 表示 a 的值,它完全等價於 a[0]。

    a[1] 占用的空間為 5 6 7 8 9,20 位元組 a[2] 占用的空間為 10 11 12 13 14,20 位元組。

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

    A指向陣列的第乙個位址,即a[0][0]的位址,其中大部分是儲存在計算機中的陣列,以兩位為例,a[3][5]在計算機儲存順序中為a[0][0]、a[0][1]、a[0][2]、a[0][3]、a[0][4], a[1][0]、a[1][1]、a[1][2]、a[1][3]、a[1][4]。

    a[2][0],a[2][1],a[2][2],a[2][3],a[2][4].a 是陣列第乙個元素的位址,也是陣列的位址,即 a[0][0] 的位址。

    二維陣列也可以看作是一維陣列,陣列元素是陣列,a[0][0],a[0][1],a[0][2],a[0][3]a[0][4]是第乙個元素,a[1][0],a[1][1][1],a[1][2],a[1][3],a[1][4]是第二個元素,a[2][0],乙個[2][1],乙個[2][2],乙個[2][3],乙個[2][4]。對於第三個元素。 所以a[0]是陣列a[0][0],a[0][1],a[0][2],a[0][3]的陣列名稱,所以第乙個元素的位址位址是a[0][0],a[1]是a[1][0],a[1][1],a[1][2],a[1][3],a[1][4]陣列名稱,a[1]表示a[1][0]的位址, a[2] 是 a[2][0]、a[2][1]、a[2][2]、a[2][3]、a[2][4]。

    陣列的名稱,因此它是 a[2][0] 的位址。 實驗證明。

相關回答
5個回答2024-08-21

#include

我沒有寫完會議以找到最大值。 >>>More

20個回答2024-08-21

首先我想解釋一下:陣列名稱是乙個指標,它指向儲存陣列元素的一段記憶體,那麼陣列元素是如何引用的,我給大家舉個例子。 例如,a[3],編譯系統將首先找到陣列的第乙個位址,即a,然後根據中的值確定位址偏移量,即3,從而確定要引用的元素是位址a+3所指向的單元的內容。 >>>More

4個回答2024-08-21

請注意,在 C 中,指標變數上的 +1 不會使其位址值為 +1,而是將該型別的乙個變數的長度相加,例如宣告雙精度 *a; a+n 的值是 a 的位址值加上 n 個雙精度型別變數的位元組長度; >>>More

7個回答2024-08-21

a) int *b[ ] 錯誤,指標必須指向受控的已知記憶體位址。 >>>More

6個回答2024-08-21

我用你的程式在我的turbo c中執行它,結果編譯好了,除了礦井的區別,其他英文輸出是一樣的,去掉了main函式前面的&ga符號後,結果還是和之前的一樣。 >>>More