2015-09-05 89 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 */