问我正在尝试声明一个指针并为其分配一些空间,但它不起作用。这段代码有什么问题?
char *p; *p = malloc(10);
答您声明的指针是p,而不是*p。当您操作指针本身时(例如,您要设置它指向某个地方),您只需使用指针的名称即可。
p = malloc(10);当您操作指针所指向的内存时,您需要使用*作为间接访问运算符
*p = 'H';
(不过,很容易犯题目中所示的错误,因为如果您使用malloc调用作为局部变量声明的初始化程序,它看起来会像这样:
char *p = malloc(10);当您将已初始化的指针声明拆分为一个声明和一个后续赋值时,您必须记住删除*.)
总而言之,在一个表达式中,p是该指针,而*p是它所指向的内容(在本例中是一个char)。
参考资料:CT&P 第 3.1 节,第 28 页