2015-09-05 145 views
0

我想將一個字符串中的字符分配給字符串數組中的字符串的第一個字符,等價地我想分配一個指針數組中的指針指向值另一個指針。指針指針數組中的指針的值

我曾嘗試以下:

char ** array=malloc(sizeof(char*)*10); 
char * str="like"; 

*(array[0])=*str; 
*(array[0])=str[0]; 
**(array)=*str; 
**(array)=str[0]; 

這些看起來他們正在分配的第一指針的值的值。

我不斷收到分段錯誤錯誤。

+0

'strings'的陣列是數組的數組。你只爲第一個數組分配內存(順便提一句 - 不正確),你應該遍歷數組的元素併爲另一個數組分配內存。請參閱C – grisha

+1

中的Google二維數組您需要正確的心態。使用框和指針圖,例如http://www.rose-hulman.edu/Users/faculty/young/CS-Classes/archive/csse120-old/csse120-old-terms/201340/Resources/C/BoxAndPointerDiagrams/discussion.pdf然後它將全部成爲明確。 –

+1

你在哪一臺計算機上可以有一個指針大小爲1,2,5或10(你分配的10個字節的除數)? –

回答

0

我意識到我誤解了創建指針數組時會發生什麼。我認爲C實際上是在數組中創建了指針,並不僅僅爲它們分配空間。

的修復:

char ** array = malloc(sizeof(char *) * 10); 
    char tok = *ts; /* create character that has value of a pointer */ 

    char *token =&tok; /* create new pointer that points to same value as *ts but in a different address */ 
    array[0]=token; /* assign the pointer */