【发布时间】:2017-03-07 02:21:24
【问题描述】:
我有以下代码:
int main(int argc, char **argv)
{
printf("%s\n",*argv);
int test = 5;
char* p;
*pint = test;
p = "banana";
printf("%s\n",p);
printf("%d\n",*pint);
}
为什么我必须写p="banana"而不是*p="banana",但是对于一个整数,它必须是*pint,否则它只会打印整数的地址? p不应该打印“香蕉”的地址吗?
【问题讨论】:
-
当您说
p="banana"时,期望在p中存储什么? -
char* p = (char*)malloc(sizeof(char));然后p = "banana";....表示需要清理基础知识.... :) -
您不必“必须”这样做。你选择这样做。
*x =表示更新存储在x指向的空间中的值。x =的意思是让x指向别的东西。p = "banana"泄漏内存并使p指向"banana"已经存在的位置。改写到p指向的空间会很好:*p = 'b'; -
%s格式说明符需要 pointer 参数。%d格式说明符需要 value 参数。与常量无关。 -
目前代码无法编译,因为
pint没有定义。