地址与指针
指针运算
指针变量存放的是地址,因此指针的运算实际上就是地址的运算
指针通常进行下列几种运算:赋值运算、取值运算、算术运算、相减运算、比较运算
* 和&运算
*称为指针运算符。出现在数据定义语句中时,* 在数据类型与变量之间,是一个二元运算符,用来定义指针变量;出现指针变量表达式左边时,是一个一元运算符,表示访问指针所指对象的内容
数组首地址
一个一维数组:a[10] = {1,2,3,4,5,}
首元素地址:&a[0] , 也可以用a表示,&a *a
一个二维数组:int a[3][4] = {1,3,4,7,9,11,13,15,17,19,21,23};

-
首元素地址 a[0] 或者 &a[0][0],
-
a此时代表首行地址,也就是a[0]这一行的首地址,
-
a + 2代表首行向后推两行,也就是a[2]这一行的首地址
-
*a 代表首元素地址,也就是a[0][0]的地址,
-
*a+2 代表首元素向后加两个元素的地址 ,也就是a[0][2]的地址
-
*(a+1)+2 代表首先首行地址向后推一行,到a[1] 得到s[1]的首行地址,再向列方向加两个元素的的地址,也就是a[1][2]的地址
-
**a代表首元素的值,因为是二维数组,*a代表是第一行,即首行的第一个地址,**a多加一个*则取其内容,**a = 1;
-
*(*a+9)*a代表首行第一个元素的地址,+9则向后推9个元素位置,即19这个元素的地址,外加*,取其地址里的内容,19
-
(a+1)[1] ,a代表首行地址,a+1代表第二行即a[1]地址,此时a[1]为首行地址(可以认为此时a[1]就是a[0],那么a[1]则就是下一行的地址),(a+1)[1]则就是a[2]的地址。
1638

被折叠的 条评论
为什么被折叠?



