int (*a)[5]这里的a是行指针,指向的是一个5的数组,那么它的单一跨度为5,即a+1,那么它指向的数值要从首地址向后移动5个位置; int a[5],这只是一个int数组,a是它的首地址,a+1,那么它就指向第二个数值。区别很明显了。
int a的意思是定义一个变量a
int &a意思是定义一个引用 //引用相当于指针再取值 他和被引用的变量都是表示同一块内存
引用就是给变量取别名 int b ;int &a=b; 用cout<<&a 和cout<<&b 你会发现他们的地址是一样的
int &a相当于引用;例如:
int n=5;
int &a=n; //相当于在n这个空间加一个名称a,那这个空间就可以叫n或者a
printf("%d %d",n,a); //结果是:5 5
int f(&int a)
这个编译通不过的,起码也该是
int f(int &a)同样是被int x = 100;f(x);调用:int f(int a),其无论对a做什么,都不影响传入参数的实参x的值。int f(int &a),对a操作等价于对x操作。其实这里a就是个x的别名。
int a; 表示申请整型变量名称为a,在内存中申请一个单元存放a。
int &a;好像一般不能用,是不是int *a或者int a,*b&a;那是申请一个指针,但这个指针指向还不定,在内存中以整形单元存储该指针。而该指针指向别的整形单元(地址);