经常会遇见指针最为函数参数传递的问题void exchange(int x, int y)
{ int p=x; x = y; y = p; } //应该是下面这样 调用函数 是值拷贝的 所以原来元素地址对应的值不会改变 上面的代码完全是无效的 void exchange(int *x, int *y) { int *p=x; *x = *y; *y = *p; }
//如果传递的是指针 就是直接在存放内容的地址中 对元素进行交换
写一个给某个指针分配内存的函数:
void my_malloc(void* p, int size) { p = malloc(sizeof(int)*size); } //应该这么写: void my_malloc(void** p, int size) { *p = malloc(sizeof(int)*size); }
指针和变量一样,也是有地址的,变量的值真是一个值 ,指针的值被解释位一个地址。那指针存到哪里了呢 。。。。
指针也是一个变量,和普通的变量一样,都存在内存中。
指针也是有地址的。
当给一个函数的参数传递一个变量是,这个变量是复制过去的。