据说malloc()函数返回一个空指针或指向已分配空间的指针 . 假设我们创建一个字符串:
char* ptr = malloc(size)
是不是 ptr 指向指针的指针?不是:
ptr
char** ptr = malloc(size)
应该是声明指向char的正确方法?
但是,当我们执行任何操作时,编译器都不会发出警告,它给出的警告是格式说明符(如果使用的话) .
我们该如何宣布这个以及为什么?另外,如何使用char **?
char * 表示一个char指针 . Malloc将返回一个 void * 指针(它将自动转换为您尝试分配的任何指针) .
char *
void *
char ** 表示 char * 指针 . 这是指向指针的指针 .
char **
如果您将指针视为 Map ,那么 char * 是一个char的 Map , void * 是一个神秘的 Map , char ** 是另一个导致char的 Map 的 Map . 所以
char* ptr = malloc(size);
是正确的,因为你想要一个 Map 到某个东西,而不是 Map 到 Map .
不,'ptr'将包含'malloc'返回的指针 . 您正在分配返回的指针,而不是其地址 .
*ptr 是指向char的指针,它通常用于管理数组或字符串 .
*ptr
**ptr 是指向char的指针,通常用于指向char管理矩阵(数组数组)或字符串数组 .
**ptr
3 回答
char *
表示一个char指针 . Malloc将返回一个void *
指针(它将自动转换为您尝试分配的任何指针) .char **
表示char *
指针 . 这是指向指针的指针 .如果您将指针视为 Map ,那么
char *
是一个char的 Map ,void *
是一个神秘的 Map ,char **
是另一个导致char的 Map 的 Map . 所以是正确的,因为你想要一个 Map 到某个东西,而不是 Map 到 Map .
不,'ptr'将包含'malloc'返回的指针 . 您正在分配返回的指针,而不是其地址 .
*ptr
是指向char的指针,它通常用于管理数组或字符串 .**ptr
是指向char的指针,通常用于指向char管理矩阵(数组数组)或字符串数组 .