struct Node{
int a[10];
int length;
}
int main(){
Node* a;
initNode(a);
return 0;
}
错误方法:
void initNode(Node *a){
a = (Node*)malloc(sizeof(Node));
a->lenght=0;
}
它不会改变main函数中的a原因是main中传入的是地址给initNode方法中的a而a第一句是重新申请个地址,所以它的地址不是原来的。它已经脱离了main中a它的改变对main中那个变量没有一点影响
正确的方法:
void initNode(Node* &a){
a = (Node*)malloc(sizeof(Node));
a->lenght=0;
}
它的含义就是把main中那个指针变量等价与initNode中的这个指针变量。它们为同一个指针。为什么了,我想是它传入的是存储指针的地址而不是指针指向地址。为了理解就认为它就把自己传入。
另外有个误区对与数组int a[10];我们不能这样
void initArray(int a[]){
a = {1,2,3,4,5,6,7};
}
a在是数组的首地址,它是个常量你这要做的意思是把a的地址又改变了,常量怎么可以改变了。。。。就如1不能为2
解决方法我们可以用指针变量
转载自:http://blog.csdn.net/yinbucheng/article/details/51590442