码迷,mamicode.com
首页 > 编程语言 > 详细

二维数组与数组指针

时间:2017-09-30 10:05:22      阅读:110      评论:0      收藏:0      [点我收藏+]

标签:pre   r++   ++   str   无法   位置   不同   数组   ptr   

int b[3][2], b是一个数组,b[0]是0行的首地址,b[1]是1行首地址,b[0]可以赋值给int*的指针,即b[i]是一维数组的首地址,b[i][j]访问的i行第j个元素

int *s=b[0]  下面的代码可以遍历数组,输出每个元素的首地址

for (int i = 0; i < 6; i++)                    
{
cout << s << " ";
cout << *s++ << endl;

}

for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 2; j++)
cout << &b[i][j] << endl;
}

二维数组名不是个2级指针,int **p=b,无法编译,b的类型是int(*)[2] ,b是个指针,指向一个数组,b与b[0]不同,b[0]的类型是int* ,虽然b[0]也是0行的首地址

int (*ptr)[2] ; ptr=b;  下面的代码可以遍历数组元素

for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 2; j++)
cout << ptr[i][j] << endl;
}

for (int i = 0; i < 3; i++)   每次移动ptr,是移动整行,前面移动s,就是移动一个元素的位置,s是int*,ptr是int(*)[2]
cout << ptr++ << endl;    cout<<b[i]效果和cout<<ptr一样

int(*t)[3][2],t是指针,指向3行2列的数组,b是指向2个元素的数组的指针,t=b不能通过编译 

 

 1     int b[3][2] = { { 1, 2 }, { 2, 3 }, { 3, 4 } };
 2     int(*t)[3][2];
 3     t = &b;
 4     int(*ptr)[2] = b;
 5     for (int i = 0; i < 3; i++)
 6         cout <<  ptr++ << endl;
 7 
 8     int *s = b[0];//
 9     cout << b[0] << " " << b[1]<<" " << b[2] << endl;
10     for (int i = 0; i < 3; i++)
11     {
12         cout << t[i] << " ";
13         cout << *t[i] << endl;
14     }
15     for (int i = 0; i < 6; i++)
16     {
17         cout << s << " ";
18         cout << *s++ << endl;
19         
20     }
21     for (int i = 0; i < 3; i++)
22     {
23         for (int j = 0; j < 2; j++)
24             cout << ptr[i][j] << endl;
25     }

 

二维数组与数组指针

标签:pre   r++   ++   str   无法   位置   不同   数组   ptr   

原文地址:http://www.cnblogs.com/hchacha/p/7613335.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!