请问C语言里面的指针里面的“*”和“&”用法怎么区别一下,各种混乱啊!谢谢!
比如定义一个函数 void Add(int * a){..}函数体里面用:a、*a、还是&a...各自作用是什么?C指针不过关啊。。 c语言 指针
[解决办法]
*a代表类型指针,a代表某类型的变量,&a代表某类型的变量的引用
*a 是指向某个地址,字节都是4 , a表示复制一个变量的值,字节与要复制的变量的字节一样大,&a表示引用某一个变量字节与类型有关!
[解决办法]
a、*a、还是&a
对于声明或定义int * a;
a 是一个指针,存放一个地址,a的值就是这个地址。
*a 是指针a,所存放的地址中存放的数据。
&a 指针也是数据的一种,而且它也有个地址,&a就是这个地址。
一切需要存放的数据,都有地址。
一般我们 都只考虑,变量的地址,而不考虑常量的地址;
因为常量,要么没有地址,要么像变量一样,也有一个地址,
这种有地址的常量,当作变量看待就可以了。
[解决办法]
int a,int *a都是定义一个局部变量(一个整形,一个指针),它都局部于函数内部。函数结束自动灭亡。
int &a是C++中引用特性,即另一个变量的“别名”。
当外部调用函数,传递参数num(或者&num)时,那么
fun(int a) == a = num;
fun(int *a)== a = #
fun(int &a)== &a = num;
[解决办法]
具体看你这个函数是要干什么了!调用时总归会是
int *b;
...;
add(&b);