如何開啟 char x 3 空間

發布 汽車 2024-08-19
22個回答
  1. 匿名使用者2024-02-01

    char *str[3];

    這是乙個指向 char 型別的指標陣列,陣列大小為 3,即 str[0]、str[1] 和 str[2] 都是指標,它們都指向 char 空間。

    這樣一來,str[1][1]這種訪問是非法的。

    char (*p)[3];

    這是指向 char[3] 空間的指標。

    使用以下命令:char (*p)[3];

    p = (char (*3])malloc(3);

    p[0][0] = 'a';

    p[0][1] = 'b';

    p[0][2] = 0;strcpy(p[0],"ab")

    printf("%s", p[0]);

    free(p);

    不知道解釋是否令人滿意?

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

    我之前說的不是真的。

    不能為陣列指標賦值,因為預設情況下陣列指標 str 為 const 型別。

    例如: 變數定義為:

    char *str[3];

    它可以是這樣的:str[0] = malloc(sizeof(char[3])))。

    str[1] = ..

    不知道解釋是否令人滿意?

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

    X-length 表面的長度是一樣的,strlen 也是如此。

    但是 x 會自動新增乙個 0 作為字串的終止符,因此它在記憶體中比 y 長。

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

    x 是乙個字串,末尾有它'\0'

    y 是字元陣列。

    兩者不容易比較。

    從記憶體的角度來看,x 有 5 個元素,占用 6 個位元組。

    y 中儲存了 5 個元素,占用 5 個位元組。

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

    char x=”12345”;這麼久...編譯系統會自動附加乙個字串結尾。

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

    char rp[100] 定義了乙個 100 個字元的陣列,在編譯或執行程式時分配了 100 個字元空間。

    char *rp;定義乙個指向字元的指標,當程式編譯或執行時,它會分配乙個指標空間,在 32 臺機器上通常為 4 個位元組。

    也可以合理地說,自動分配也是有爭議的。

    在空間分配方面,這就是記憶體管理。

    通常有兩種情況,一種是靜態分配,由編譯器和系統自動分配

    正如我們通常定義的那樣,int a; 這也分為兩種情況。

    如果 int a; 定義為全域性變數,則 a 將位於系統為程式分配的空間中。

    如果 int a; 在函式中定義,則 a 將位於程式的堆疊中。

    另一種是動態分配,程式在執行時向系統請求記憶體操作。 主要目的是更好、更靈活地管理記憶體。

    當你執行這個操作時,RP執行的記憶體是0,並且沒有分配,所以你當然不能使用這個記憶體。

    應該說RP指向的記憶是非法的。

    儘管 rp=0 被視為初始化操作,但如果未為 RP 分配實際可用位址值,則 RP 不能用作指標,並且無法訪問其位址。

    p = tmp;這並不是說 P 複製了 TMP 陣列,只是 P 中的值成為 TMP 的位址(P 指向 TMP)。 你可以把 p 看作是 tmp 的別名,就像乙個人有兩個名字,但無論如何,只有乙個人。

    初始化工作指標變數的唯一方法是為其分配乙個有效的記憶體位址,即記憶體請求函式返回的記憶體位址或現有記憶體位址。 我們總是最終為這個指標變數分配乙個有效的記憶體位址。

    int *p,*k,v;

    p=malloc(sizeof(int));

    k=&v;k=p;

    這些只是形式上的差異,無論如何,其中乙個可用的指標必須指向合法位址。

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

    宣告陣列為將儲存在陣列中的資料分配記憶體,而宣告指標僅分配一段記憶體來儲存它稍後指向的記憶體的位址。

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

    陣列本身被編譯,系統為其分配記憶體。 指標只是乙個指向記憶體片段的位址變數。

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

    如果定義為 char rp[100],編譯器會在堆疊上為陣列變數 rp 分配 100 位元組的記憶體;

    如果定義為 char*rp,則編譯器為堆疊上的指標變數分配 sizeof(char*) 大小的記憶體,通常為 4 個位元組; 要使 RP 有效,RP 指標必須指向有效的記憶體位址,在這種情況下,您可以在堆上為其分配額外的記憶體,或指向另乙個字串。

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

    陣列空間是靜態分配的(即,在編譯之前有空間),並且指標在不指向任何記憶體的情況下宣告; 無法為其引用的記憶體分配值;

    你可以這樣做。

    #include

    #include

    #include

    void main()

    elseprintf("p=[%s] len=[%d]", rp, len);

    free(rp);釋放 rp} 引用的記憶體空間我上面錯了,如果指標在宣告時沒有初始化,它都指向同乙個記憶體:

    0xcccccccc(十六進製)。

    而且這塊內存在系統中是不可寫的(就是不能分配),是的,其實有兩種方式。

    1. 動態分配記憶體。

    2. 為指標變數賦值。

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

    2 的二進位程式碼是 =10;

    2+x = 10+10100111 = 10101001 = 轉換為十進位 = 169;

    3(3 的否定)= -4

    169 4(按位異或運算)= -171

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

    二進位表示。

    85(十進位)。

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

    如果 char x[2][10] = ; 字元 x[0][10] 等於什麼?

    答:沒有等待,重複定義陣列 x。

    如果 char y[2][3][10] = ,} 那麼 char y[2][3][10] 是什麼?

    答:沒有,原理同上。

    char y[2][2][10]=?

    char y[1][1][10]=?

    char y[1][2][10]=?

    char y[0][0][10]=?

    char y[0][0][0]=?

    答:這五個是宣告三維陣列,但正確的表達是錯誤的,不是嗎? ,用 {} 或 “” 括起來。

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

    字元 x[0][10 是 w;

    char y[0][0][10]=w

    char y[0][0][0]=h

    僅在 y[1][1][2] 之前才有值。

    陣列包含字母。

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

    v 是乙個聯合(commoner)變數,它有兩個元素,x 和 c,它們都需要乙個位元組,並且它們被分配給同乙個位址。 x 是乙個結構變數,有三個元素,s1、s2 和 s3,分別佔 2、3 和 3 位數字。 分配記憶體時,最低的位在前,最多的位在後。

    當二進位檔案為01100100)時,變數與記憶體儲存之間的關係如圖所示。

    其中 x 的成員 s3 是二進位 011,即十進位 3,因此輸出為 3。

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

    這屬於你的位元域問題! X 和 c 在聯合中共享乙個記憶體空間,這就是為什麼聯合一次只能儲存一種資料型別的值。

    也就是說,結構變數 x 中三個欄位的記憶體值為 100

    100 01100100的二進位位。 (高位元組->低位元組)而一般的機器是小的endea,即低位元組先,所以S3占用3位011輸出為 3

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

    既然我們可以通過申請 1 位元組的記憶體來使用它背後的記憶體,為什麼我們要在 malloc 中新增 size 引數呢?

    1.請求1位元組記憶體,可以使用p+1,但極有可能在執行時造成記憶體衝突。 作業系統管理記憶體,知道哪些可用,哪些不可用。 當我們使用 malloc 申請記憶體時,我們需要給 malloc 新增乙個 length 引數,告訴作業系統這個記憶體已經用完了,其他程式不能用了。

    從這個角度來看,char *p = (char *)malloc(sizeof(char)); 在那之後使用 p+1 是錯誤的。

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

    例如,在同一樓層,如果 P 是 3200,那麼 P+1 就是 3201P,指的是位址

    回覆 2 樓和 3 樓,即使只應用了乙個 char 但 p+1 仍然有效,即使這裡定義了 int 型別,p+1 仍然指向下乙個,仍然可以呼叫,因為之前的定義是 char *p....

    sizeof(char)中填寫什麼與返回的型別無關,填寫char返回1,填寫int返回2....然後用 malloc 開啟空間,然後強制轉換為 char* 型別。

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

    由於 malloc 只申請了乙個 char 空間,所以你只給 p 分配了空間,而 p+1 是無效的。

    您可以在 sizeof 之前乘以 n(數字)以請求多個空格。

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

    指向空格的下乙個位元組。

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

    指向 p 指向的空間的下乙個位元組,因為 char 只占用乙個位元組!

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

    一次複製乙個字元。

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

相關回答
4個回答2024-08-19

讚美改革開放和新時代的詩歌 1

1、《中國改革開放四十年》現代:趙春霜。 >>>More

13個回答2024-08-19

開放和折衷政策。

19個回答2024-08-19

鄭和此行西洋的主要目的,是宣傳國家的經濟和軍事實力,探查朱雲文的下落。 >>>More

7個回答2024-08-19

絲綢之路不僅運輸絲綢,還出口瓷器、糖和五金等商品,以及香料、藥材和寶石等進口商品。 >>>More

17個回答2024-08-19

絲綢之路。 西漢時期,張騫曾派使者前往西域。 >>>More