簡體   English   中英

初始化后的數組值不相同

[英]array values not same after initializing

我已經用C語言編寫了一段代碼,其中我使用隨機數/字符初始化了一個數組。 但是,當我在初始化后打印數組值時,我看到每個索引上的值都等於最后分配的值(最后一個索引的值)。 請告訴我代碼中的問題是什么?

碼:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>


int main () {

    char *save[3][3] = { {" "," "," "}, {" "," "," "}, {" "," "," "} };
    char x[2] = {'\0', '\0'};
    int i, j, b;
    srand(time(NULL));

    printf("Assigned Values (initializing):\n");
    for(i=0; i<3; i++) {
        for(j=0; j<3; j++) {
            b = rand()%10;
            x[0] = b+'0';
            save[i][j] = x;
            printf("%s ",save[i][j]);
        }
    }

    printf("\n\nValues after initializing:\n");
    for(i=0; i<3; i++) {
        for(j=0; j<3; j++) {
            printf("%s ",save[i][j]);
        }
    }

    printf("\n\n");
    return 0;
}

輸出:

Assigned Values (initializing):
1 5 9 8 5 7 5 4 1

Values after initializing:
1 1 1 1 1 1 1 1 1

Press any key to continue . . .

您將數組元素的所有元素初始化為save到同一指針的元素,因此使用它們中的任何內容將看到的都是相同的。

在這種情況下,建議您像這樣直接將數據存儲在save

#include <stdio.h>
#include <stdlib.h>
#include <time.h>


int main (void) {

    char save[3][3][2] = { {" "," "," "}, {" "," "," "}, {" "," "," "} };
    int i, j, b;
    srand(time(NULL));

    printf("Assigned Values (initializing):\n");
    for(i=0; i<3; i++) {
        for(j=0; j<3; j++) {
            b = rand()%10;
            save[i][j][0] = b+'0';
            printf("%s ",save[i][j]);
        }
    }

    printf("\n\nValues after initializing:\n");
    for(i=0; i<3; i++) {
        for(j=0; j<3; j++) {
            printf("%s ",save[i][j]);
        }
    }

    printf("\n\n");
    return 0;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM