c语言数组指针的使用方法是_c语言将数组倒序输出 指针

c语言数组指针的使用方法是_c语言将数组倒序输出 指针一维数组指针一维数组的指针是直接将一维数组的首地址赋予指针变量,之后通过指针变量的运算逐渐输出一维数组中的各个元素的值。例如:inta[20];int*p;因为数组名相当于一个指针指向的就是一维数组的首地址(例如a[0]),所以可以直接将数组名赋予指针变量(例如p=a),无需加取地址符&;也可以让指针变量指向第一个元素的地址(例如p=&a[0]);即p=a与p=&...

一维数组指针

一维数组的指针是直接将一维数组的首地址赋予指针变量,之后通过指针变量的运算逐渐输出一维数组中的各个元素的值。
例如:int a[20];
int *p;
因为数组名相当于一个指针指向的就是一维数组的首地址(例如a[0]),所以可以直接将数组名赋予指针变量(例如p=a),无需加取地址符&;也可以让指针变量指向第一个元素的地址(例如p=&a[0]);即p=a与p=&a[0]是等价的,(应当要注意的是:p=a是将数组首元素的地址赋给指针变量,而非将数组a的各元素的值赋给指针变量)
如果一个指针变量p已经指向数组中的一个元素,则p+1指向数组中的下一个元素,p-1指向的是数组中的上一个元素。(注意:执行P+1或P-1时,并不是将P的值简单的加1,而是加上一个数组元素所占用的字节数,例如:float型,每个元素占4个字节,所以p+1意味着使p的地址加4个字节,以便让其指向下一个元素)
这里的a+i与p+i是等价的,也可以用数组名进行运算;
e

*(a+i)==*(p+i);
只听到从架构师办公室传来架构君的声音:
回驾观紫微,与帝合灵符。有谁来对上联或下联?

二维数组指针

令int a[2][3]={
{1,2,3},{4,5,6}}
在二维数组中数组名指向数组的首元素,但是不是简单的表示一个简单的元素,而是由多个元素所组成的一维数组,因此数组名指的是二维数组首行(即下标为0的那一行)的首地址,a+1即表示下标为1的那一行元素,又因为数组名代表首元素的地址,所以a即代表二维数组中a[0][0]的值,a+1即a[1][0]的值。a[0]等价于*(a+0),a[1]等价于*(a+1),(a+1)+1的值即&a[1][1]。要想得到a[1][1]的值,就要再进行取值,即(a[1]+1)或*((a+1)+1)为a[1][1]的值。(注意:(a+i)与a[i]是等价的)
切记二维数组名是指向二维数组首行,而非指向二维数组a[0][0];
二维数组在指向行的指针前加*,就转化为了指向列的指针,反之,在二维数组指向列的指针前加&,就转化为了指向行的指针.(例如:&a[i]或a+i指向行.而a[i]或*(a+i)则指向列)
在定义时的int (*p)[4]的意思是指针变量p指向包含四个整型元素的一维数组,即在二维数组中一共有四行元素。

架构君码字不易,如需转载,请注明出处:https://javajgs.com/archives/166358
0
 

发表评论