男人,指针继续给我带来麻烦.我以为我理解了这个概念.(基本上,当你想操纵ptr指向的位置保存的实际内存时,你会使用*ptr.如果你想通过做这样的事情来移动指针,你会使用ptr作为ptr ++或ptr--.)所以,如果是这种情况,如果你使用星号来操纵指针所指向的文件,这是如何工作的:
char *MallocAndCopy( char *line ) {
char *pointer;
if ( (pointer = malloc( strlen(line)+1 )) == NULL ) {
printf( "Out of memory!!! Goodbye!\n" );
exit( 0 );
}
strcpy( pointer, line );
return pointer;
}
Run Code Online (Sandbox Code Playgroud)
malloc返回一个指针,所以我理解为什么if条件中的"指针"不使用星号.但是,在strcpy函数中,它将行的CONTENTS发送到指针的CONTENTS.不应该是:
strcpy( *pointer, *line);
Run Code Online (Sandbox Code Playgroud)
????? 或者我对指针的理解是正确的,这只是strcpy函数的工作方式吗?
C样式字符串是字符字节数组.当您将数组作为指向数组类型的指针传递时,指针包含数组的第一个元素的地址.
该strcpy函数将指针指向char源数组的第一个(它是字符串的开头)和指向char目标数组中第一个的指针,并遍历源,直到它到达一个'\0'字符,该字符终止字符串.
这也是为什么当你调用时malloc,传递给它的大小是strlen(line)+1,因为你需要为终止字符分配一个字节(据我所知).