珠海个人社保缴费查询:这个程序错哪了?

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/30 04:20:43
#include<iostream>
using namespace std;
int main()
{
int a[5][5] = {0};
int** b;
b = a;
return 0;
}
为什么类型不对?
a 是 a[0]的地址,而a[0]是a[0][0]的地址,那么a 就应该是int**型的啊。 为什么不对?
而且我试了一下 cout << a
cout << &a[0]
cout << a[0]
cout << &a 居然都是同一个地址,这怎么回事啊?
#include<iostream>
using namespace std;
int main()
{
int a[5][5] = {0};
cout << "a = " << a << endl;
cout << "a[0] = " << a[0] << endl;
cout << "&a[0] = " << &a[0] << endl;
cout << "*a = " << *a << endl;
cout << "&a = " << &a << endl;
return 0;

}
输出都一样,怎么回事?

cout << "a[0] = " << a[0] << endl;
cout << "&a[0] = " << &a[0] << endl;
cout << "*a = " << *a << endl;
cout << "&a = " << &a << endl;

其实, 数组名代表的就是数组的首地址, 所以&a[0]和&a是一样的, &a和 *a 前一个是对a 取地址, 后一个是指向数组a的指针,所以都是一样的!!!

还有你对 int** 的理解有问题, int** 是说指向指针的指针,并不是 "a 就应该是int**型" 你的定义是说定义一个指针b 指向数组a的地址也就是 b -> *a

int a[5][5];
知道计算机上怎样给这个语句分配空间的?
是线形的
就是说

a[0][0] a[0][1] a[0][2] a[0][3] a[0][4] a[1][0]
......
cout << &a[0]
cout << a[0]
cout << &a
所以上面的都是指向a[0][0]的地址拉

cout<<&a[1][0]-&a[0][4];
cout<<&a[0][4]-&a[0][3];
上面的输出是不是一样的?

所以你先应该搞清电脑是怎样给你这个数组分配空间的
电脑不可能给你的2维数组分配象2维一样的空间.

int main()
{
int a[5][5] = {0};
int** b;
b = a; // b=&a[0];
return 0;
}

:#include<iostream>
using namespace std;
int main()
{
int a[5][5] = {0};
cout << "a = " << a << endl;
cout << "a[0][1] = " << a[0][1] << endl;
cout << "&a[0] = " << &a[0] << endl;
cout << "*a = " << *a << endl;
cout << "&a = " << &a << endl;
return 0;

}电脑不可能给你的2维数组分配象(2维)一样的空间

第一行
#include<iostream.h>

借鉴一下
呵呵