目录
1 数组元素的指针
(1)定义
所谓数组元素的指针就是数组元素的地址。
(2)举例
代码:
#include <stdio.h>
int main()
{
int a[10]={1,3,5,8,23,44,67,34,55,670};
int *a_point;
a_point=a; //相当于a_point=&a[0],即把a[0]元素的地址赋给指针变量a_point
printf("a_point首地址: %d\n",a_point);
printf("a首地址: %d\n",a);
printf("a[0]首地址: %d\n",&a[0]);
printf("*a_point值: %d\n",*a_point);
printf("a[0]值: %d\n",a[0]);
for (int i = 0; i < 10; i++)
{
printf("a[%d]的首地址为: %d \n",i,&a[i]);
}
printf("\n********\n");
a_point=a; //初始化a_point起始地址
for (int j = 0; j < 10; j++)
{
printf("a_point[%d]的首地址为: %d \n",j,&a_point[j]);
}
return 0;
}
/**输出结果**/
a_point首地址: 6421984
a首地址: 6421984
a[0]首地址: 6421984
*a_point值: 1
a[0]值: 1
a[0]的首地址为: 6421984
a[1]的首地址为: 6421988
a[2]的首地址为: 6421992
a[3]的首地址为: 6421996
a[4]的首地址为: 6422000
a[5]的首地址为: 6422004
a[6]的首地址为: 6422008
a[7]的首地址为: 6422012
a[8]的首地址为: 6422016
a[9]的首地址为: 6422020
********
a_point[0]的首地址为: 6421984
a_point[1]的首地址为: 6421988
a_point[2]的首地址为: 6421992
a_point[3]的首地址为: 6421996
a_point[4]的首地址为: 6422000
a_point[5]的首地址为: 6422004
a_point[6]的首地址为: 6422008
a_point[7]的首地址为: 6422012
a_point[8]的首地址为: 6422016
a_point[9]的首地址为: 6422020
说明:
① 程序中的数组名不代表整个数组,只代表数组首元素的地址
#include <stdio.h>
int main()
{
int *point_b,b[10]={1,3,5,8,23,44,67,34,55,670};
point_b=b; //程序中的数组名不代表整个数组,只代表数组首元素的地址
printf("b[0]的地址为: %d\n",&b[0]);
printf("point_b的地址为: %d\n",point_b);
printf("&b的地址为: %d\n",&b);
printf("\nb[10]各个元素起始地址\n");
for (int i = 0; i < 10; i++)
{
printf("b[%d]的地址为: %d\n",i,&b[i]);
}
return 0;
}
/**输出结果**/
b[0]的地址为: 6421984
point_b的地址为: 6421984
&b的地址为: 6421984
b[10]各个元素起始地址
b[0]的地址为: 6421984
b[1]的地址为: 6421988
b[2]的地址为: 6421992
b[3]的地址为: 6421996
b[4]的地址为: 6422000
b[5]的地址为: 6422004
b[6]的地址为: 6422008
b[7]的地址为: 6422012
b[8]的地址为: 6422016
b[9]的地址为: 6422020
② “p=a;”的作用是“把a数组的首元素的地址赋给指针变量p”,而不 是“把数组 a各元素的值赋给p”
③ 在定义指针变量时可以对它初始化。
/**要求:将a数组首元素(即 a[0])的地址赋给指针变量p(而不是赋给*p)**/
//方法1
int *p=&a[0];
//方法2
int *p=a;
//方法3
int *p;
p=&a[0];//不应写成*p=&a[0];
(3)注意事项
① 在C语言中,数组名(不包括形参数组名)代表数组中首元素(即序号为0的元素)的地址。
因此,下面两个语句等价
p=&a[0]:;//p的值是 a[0]的地址
p=a; //p的值是数组a首元素(即a[o])的地址
② 引用数组元素可以用下标法(如 a[3]),也可以用指针法,即通过指向数组元素的指针找到所需的元素。使用指针法能使目标程序质量高(占内存少,运行速度快)。
2 指针的算术运算
(1)前提
指针已指向一个数组元素时
(2)运算规则
① 加一个整数(用+或+=),如p+1;
② 减一个整数(用-或-=),如p-1;
③ 自加运算,如 p++,++p;
④ 自减运算,如 p--,--p。
⑤ 两个指针相减,如pl—p2(只有p1和p2都指向同一数组中的元素时才有意义)。
(3)举例
[1] p+i
#include <stdio.h>
int main()
{
int *p,a[10]={1,3,5,8,23,44,67,34,55,670};
p=a;
printf("\n**a[i]的首地址及储存的数据**\n");
for (int k = 0; k < 10; k++)
{
标签:point,元素,地址,数组,printf,031,指针
From: https://blog.csdn.net/2301_78461620/article/details/139201998