如何使用 C 指標迴圈訪問動態陣列

發布 科技 2024-04-22
17個回答
  1. 匿名使用者2024-02-08

    #include

    #include

    struct book

    char book_id[20];

    char book_name[20];

    char book_writer[20];

    struct book* next;

    void main()

    int i;

    struct book * qwe,*tep,*head;

    qwe = (struct book *)malloc(sizeof(struct book));

    head=qwe;

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

    printf("請輸入書籍ID%3D",i+1);

    scanf("%s",&qwe->book_id);

    printf("請輸入書名 %3d",i+1);

    scanf("%s",&qwe->book_name);

    printf("請輸入作者姓名 %3d",i+1);

    scanf("%s",&qwe->book_writer);

    tep= (struct book *)malloc(sizeof(struct book));

    qwe->next=tep;

    qwe=tep;

    qwe->next=null;

    printf("輸出書籍資訊");

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

    printf("圖書 id%s圖書名稱%s圖書作者姓名%s",head->book_id,head->book_name,head->book_writer);

    head=head->next;

    printf("");

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

    它可以這樣寫。

    int n;

    printf("請輸入你。

    要定義的陣列的大小:");

    scanf("%d",&n);

    int *a = (int *)malloc(n*sizeof(int));申請n個整數資料空間,標頭檔案為。

    如果應用程式失敗,if(a == null) 返回 -1memset(a, 0, n)。 應用於初始化的空間為 0,標頭檔案為 0。

    但是,無法定義動態陣列。

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

    1.使用malloc函式先分配第乙個維度的大小,然後在迴圈中分配每個維度的大小。

    2. 示例,分配 3 行和 4 列的 2D 陣列:

    #include

    #include

    int main()

    初始化。 for (i = 0; i < 3;+i)}輸出測試。

    for (i = 0; i < 3; +i)printf ("");

    釋放動態空間。

    for (i = 0; i < 3; +i)free(a);

    return 0;}/*

    輸出: 0 1 2 3

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

    int size=5;陣列的大小可以由您定義,也可以由使用者輸入。

    char *p=new char[size];或 int 和其他類似的型別。

    之後,最好使用 p 作為陣列,例如 p[0] 是陣列的 0 元素。

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

    假設您要定義。

    du 的 zhi 群數為 int a[n],動態 dao 皈依方法為 answer:

    #include

    int main()

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

    你看,當你輸入時,你給陣列分配了乙個值,最後,p 指向 a[9],然後你轉到 printf。

    p++,其中 p 不指向 a,而是指向 a[9]; ,然後看看你的第二個程式,它也是錯誤的,它怎麼可能在我的電腦上用完,p 同樣沒有確定的點。

    不執行。 這就是它應該的樣子。

    #include

    int main()

    int *p,i,a[10];

    p=a;for(i=0;i<10;i++)p++=i;

    p=a;for(i=0;i<10;i++)printf("a[%d]=%d",i,*(p+i));

    您的第二個程式用完了。 雖然答案是一樣的,但是,它是系統給出的隨機值,這是不正確的。

    希望我能幫到你

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

    p++,你要看運算子的優先順序,雖然我也有點忘記了,但無論如何,*p++ 都不可能是對的,無論是 *(p++) 還是 (*p)++ 都不能和 *p 有相同的值。

    當然,*p++ 的意思是 *(p++),所以 p 已經移動到下乙個位置。

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

    #include

    void print(int *p, int len)}int main()

    我頭暈目眩,我什至沒有採用它。

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

    例如int a[10];

    int *p=a;

    如果你直接遍歷它,它是。

    for(int i=0;i<10;i++)cout,指標遍歷是這樣的。

    for(int i=0;i<10; i++)

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

    指標解決方案遍歷陣列示例:

    #include

    int main();

    int i, *p = arr, len = sizeof(arr) / sizeof(int);

    for(i=0; iprintf("%d ", *p+i) )printf("");

    return 0;

    陣列只是記憶體中陣列元素的簡單排列,沒有開始和結束標誌,在查詢陣列的長度時不能使用 sizeof(p) sizeof(int),因為 p 只是乙個指向 int 型別的指標,編譯器不知道它是指向乙個整數還是一系列整數(陣列)。

    因此,sizeof(p) 採用 p 指標變數本身占用的位元組數,而不是整個陣列使用的位元組數。 也就是說,根據陣列指標,整個陣列的元素數是不能反轉的,陣列的資訊從陣列的開頭到結尾。

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

    #include

    void print(int *p, int len)}int main()

    我頭暈目眩,我什至沒有採用它。

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

    vs2005,放 int i; 放在前面後,很正常。

    首先,在純 C 中使用時定義變數是 C99 的標準。

    VS2005 部分受 VS2005 中使用的 C99 標準支援。 預設情況下不支援 C 檔案,您的問題應該是您的檔名是。 cpp,不利於除錯 C 程式。

    出現錯誤的原因是因為你已經用指標 p 遍歷了一次,並且 p 的位址已經改成了 a+5,不再是 a,然後繼續訪問就屬於跨界訪問,如果沒有掛起,則顯示值為記憶體中的值,該值是隨機的。

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

    您之前已經使用了 *(p++),指標現在指向 a[4] 後面的單元格。 而這個儲存單元的價值是不確定的。 房東後來用P++迴圈輸出,當然是錯的。

    中間應該加乙個句子 p=a; 然後,指標再次指向 a[0]。 房東明白嗎?

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

    for(int i=0;i<5;i++)

    錯! 我應該被定義在前面!

    int a[5]=;

    int *p=a,i;

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

    就是這樣。

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

    沒關係! 看看我的貼紙。 我正在使用 cfree

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

    什麼編譯器,我在這裡 gcc 很好。

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

    沒關係。

    我之前剛剛單獨定義了 i。

相關回答
7個回答2024-04-22

MF47萬用表測量直流電壓:其普通板麵最大允許測量電壓為1000V。 另乙個測量電壓高達2500V的特殊端子(不建議一般操作人員使用)。 >>>More

19個回答2024-04-22

在 Final Cut Pro 7 中,有幾種方法可以建立多螢幕過渡。 以下是一些基本方法: >>>More

12個回答2024-04-22

只需新增一些閃閃發光的東西,您就可以開始了

6個回答2024-04-22

第一種方法:先導入sci檔案,然後點選選單欄中的file-import,然後選擇檔案或資料夾。 >>>More

17個回答2024-04-22

使用iTunes刪除iPod中的歌曲的操作如下:

步驟2:使用資料線將iPod連線到計算機,iTunes將在識別iPod後自動安裝驅動程式。 >>>More