void getmemory(char **p)
{
*p=(char *) malloc(100)//str = p ,给p赋予分配地址和空间,不就是相当于给str
strcpy(*p,“hello world”)//赋予分配地址和空间,为什么会有问题呢??
}
int main( )
{
char *str=NULL//str就是指针,但是空指针
getmemory(&str)
printf(“%s/n”,str)
free(str)
return 0
}
c语言中指针即地址,地址的传值可以引起参数的变化。比如:
&x,
&y是取这两个变量的地址,作用空间在main函数里。然后函数调用把这两个变量的地址传递到函数myadd中,在函数中的*a和*b分别是引用地址指向的变量值,等于是取到了x,y本身的值。在myadd中直接操作*a可以改变x的值。
通俗来说因为&x,&y表示的是x,y的地址。所以传递的是地址。意思就是说,函数可以通过地址引用变量。