1
我試圖創建任意大小的數組,出於某種原因,這個代碼在這裏工作:困惑指針和傳遞它們的參數
int rand_tab(unsigned int n, int min, int max, int** dest){
if(!(*dest = malloc(sizeof(int)*n))) return 0;
return 1;
}
與隨機數生成主:
int* tab;
if(!(rand_tab(taille, min, max, &tab))) return -1;
for(i=0; i<taille; i++) tab[i] = random(min, max);
但這種崩潰(儘管它編譯就好了):
int rand_tab(unsigned int n, int min, int max, int** dest){
if(!(*dest = malloc(sizeof(int)*n))) return 0;
for(i=0; i<n; i++) *dest[i] = random(min, max);
return 1;
}
,因爲我通過&tab
的功能,dest
現在指向tab
,這意味着*dest[i]
應該相當於主要編寫tab[i]
。
如果我將*dest[i]
替換爲*(*dest+i)
它可以工作。這裏發生了什麼?
優先級:'*'的優先級低於'[]'。在函數中使用'(* dest)[i]'。 –
這必須是重複的,可能是很多次。與往常一樣,困難在於找到重複。找到重複問題比回答問題要困難得多。 –
確實,謝謝你的幫助,我現在感覺很蠢。至於找到重複,如果我能找到它,我不需要問這個問題。乾杯! – Kwantuum