我對指針沒有太多的經驗,但我想嘗試製作一個指針數組,每個指針指向一個掃描的字符串。 例如,您首先輸入要掃描的字符串數(例如5),然後我想要掃描這些字符串並創建一個指向這些字符串的5個指針數組。如何存儲多個數組並指向它們的指針
因爲我沒有像這樣的東西有很多的經驗,我先用正常的數組,而不是字符串試了一下,我得到的是這樣的:
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
#include<assert.h>
int **array(int m, int n) {
int i, j;
int **array = malloc(n*sizeof(int*));
for (j=0; j<m; j++) {
for (i=0; i<n; i++) {
array[i]=malloc(m * sizeof(int));
scanf("%d", &array[j][i]);
printf("array[%d][%d] is scanned and has value %d\n", j, i, array[j][i]);
}
}
return array;
}
int main(int argc, char*argv[]){
int m, n, *p, k;
scanf("%d %d", &m, &n);
printf("m is %d and n is %d\n", m, n);
p=*array(m, n);
printf("the numbers are:\n");
for (k=0; k<m*n; k++) {
printf("%d\n", p[k]);
}
return 0;
}
但在這裏它已經走錯了,並我不知道爲什麼... 在最後一個printf,我總是得到錯誤的數字,0和17's ... 有人可以解釋我爲什麼這是,我做錯了什麼?我認爲這是與陣列的返回,但我不知道..
如果有人能解釋這對我來說,這將是偉大的。
非常感謝!我現在明白它好多了。 – user2922660
很高興我幫了忙。我已經是一個**長期**的新手了,我仍然不認爲自己脫離了這個階段,所以我很善於發現別人的懷疑:) –