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

多维数组与指针{笔记}

时间:2014-11-26 18:27:04      阅读:188      评论:0      收藏:0      [点我收藏+]

标签:io   sp   for   bs   ef   amp   nbsp   对象   不同的   

a:表示二维数组名,指向一维数组a[0],即0行首地址;

a[0],*(a+0),*a:表示0行0列元素地址;

a+1,&(a+1):1行首地址

a[1]+2,*(a+1)+2,&a[1][2]:1行2列元素a[1][2]的地址

*(a[1]+2,*(*(a+1)+2),a[1][2]:1行2列元素a[1][2]的值

二维数组名是指向行的;

例如:a和a+1是指向行的指针,在前面加*就是*a和*(a+1),就成为指向列的指针,分别指向a数组0行0列的元素和1行0列的元素;反之,在指向列的指针前面加上&,就成为指向行的指针;

&a[i]或a+i指向行,a[i]或*(a+i)指向列,当列下标为0时,&a[i]和a[i](即a[i]+j)值相等,即相同地址值,但是指向的对象是不同的,指针的类型不同;

在二维数组中,a+i、a[i]、*(a+i)、&a[i]、&a[i][0]的值相等,都是同一地址值;

例子:

#include <studio.h>
#define FORMAT "%d,%d\n"
void int main()
{
int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};
printf(FORMAT,a,*a);
printf(FORMAT,&a[0],&a[0][0]);
printf(FORMAT,a[1],a+1);
printf(FORMAT,&a[1][0],*(a+1)+0);
printf(FORMAT,a[2],*(a+2));
printf(FORMAT,&a[2],a+2);
printf(FORMAT,a[1][0],*(*(a+1)+0));
return 0;
}

 

多维数组与指针{笔记}

标签:io   sp   for   bs   ef   amp   nbsp   对象   不同的   

原文地址:http://www.cnblogs.com/collect/p/4123804.html

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