当前位置: 代码迷 >> 综合 >> C++,二维数组与指针,二维数组名是不是首地址?
  详细解决方案

C++,二维数组与指针,二维数组名是不是首地址?

热度:94   发布时间:2024-01-19 15:35:32.0

答: 是首地址,是数组的首地址,虽然值等于第一个元素的地址,但是不代表元素的地址.

1. 数组名都是地址常量,都是首地址,可以直接付给指针,但是一维数组和二维数组名 赋予指针时有点不一样.

2.数组名不是指针,它仅仅是个 地址常量

3. 一维数组的数组名 直接付给指针, 如 int a[3]; int *p=a;

4. 二维数组名 直接赋给指针 就错了... 如 int a[3][4]; int *p =a;  就是错误的;  int *p = a[0] ; 就对了. 

5. 二维数组 对应的是二维数组的指针, 这样定义: int (*p) [4]  ;  p=a 就对了

#include <iostream>
#include <string>
using namespace std;
void main()
{
int a[3][4]={
{1,2,3,4},
{5,6,7,8},
{9,10,11,12}
};
int * p ; 
// p=a ;  错误
p =a[0]; // ok
for(int i=0;i<12;i++)
cout<<*(p+i)<<"--------"<<p+i<<endl;
cout<<a<<endl;   // a 与a[0]地址是一样的.
cout<<a[0]<<endl;
}

 

 为什么 p=a 是错的.?

 

  相关解决方案