C程序设计语言--修改指针指向的内容、二级指针的传递
首先记住两句话,函数传递有值传递和地址传递,要想修改某个内容的值,必须传递指向这块内容的地址。 这就引起了关于指针的最基本的两个内容:是修改指针还是修改指针指向的值,前者需要将指针的地址(也就是二级指针呗)传递给函数,后者则只需要指针本身即可。
要想在函数中修改他们的值,就要传递他们的地址。
凡是用到结构体的地方,都是用它的指针来做参数的,这是什么原因呢?最近发现,如果直接传结构体,编译器会把结构体的各个成员都一一压栈,而如果传递的是结构体指针的话,则只压一个结构体的指针就可以了,大为简洁。
有这么一个函数
void change(char **p) { *p = na; } int main() { char *p = NULL; change(&p); printf("%s",p)//这回打印出来的就是wang了。 }