void test1(char * p)
{
p = (char *)malloc(20);
strcpy(p, "abcde");
}
void test2()
{
char *p1 = “hello”;
test(p1);
}
这里我有个疑问 就是在实参传给形参 紧接分配空间 这个空间包含p1的字符串还是 清空了?
你想明白指针的值就可以了.不是指针指向的值.是指针本身就是一个值.他指向一个内存位置.
这个值是值传递的.只是通过这个值传递.能让子函数操作到 指向的内存.但是外部函数本身的指针变量.在内存中也有一个位置.但是和子函数的参数不在一起.因为他们是值传递的.你用一个指向指针的指针.才能修改外面的指针.
函数调用都是值传递.这个一点要清楚.
char *p1 = “hello”;
p1是你的身份证号码,绑定了一个银行卡,里面存的是hello
p = (char *)malloc(20); 换了一个银行卡,给里面存了 "abcde"。
理解的关键是pi是指针,指向一个地址,对它的操作中是不是意外指向了一个地址。
可能我没表达清楚,我打印出malloc的大小是32 我百思不得其解 我明明分配的是20 可结果出人意料 问了好多人说什么的都说我觉得最正确的答案应该是 内存字节对齐。