C语言:指针3(指针与一维数组)

指针与一维数组

一维数组名

​ 一维数组名是个指针常量(不能改变)

​ 存放的是一维数组第一个元素的地址

下标和指针的关系

​ 如果p是个指针变量,

​ 则p[i] 永远等价于 *(p+i)

理解:

定义数组a ,p指向a,则p = a

所以a[i] 等价于 p[i] ,表示第(i+1)个元素

所以&a[i] = &p[i] = (p+i)

所以a[i] = p[i] = *(p+i)

确定一个一维数组需要几个参数

​ 【如果一个函数需要处理一个一维数组,则需要接收该数组的哪些信息】

需要两个参数

数组第一个元素的地址

数组的长度

通过函数输出一维数组

#include <stdio.h>

void f(int *pArray,int len){  //该函数接收数组名及长度,数组名是指针常量,所以用int *类型
	for (int i = 0; i < len; ++i)
	{
		/* code */
		printf("%d\n",*(pArray+i) );
	}

}

int main(int argc, char const *argv[])
{
	
	int a[5] = {1,2,3,4,5};
	f(a,5);
	return 0;
}

通过指针的移动(++,–)实现一维数组的输入输出

#include <stdio.h>
int main()
{
	int *p,a[5];
	p = &a[0];//等价于 p = a;

	printf("请输入a\n");
	for (int i = 0; i < 5; ++i)
	{
		scanf("%d",p++); //等价于&a[i],因为(p+i) = &a[i],
	}
	p = a;//因为p自增,此时指向数组最后一个元素,需要将p重新指向数组首地址

	printf("array a is\n");
	for (int i = 0; i < 5; ++i)
	 {
	 	/* code */
	 	printf("%5d",*p++ );
	 } 
	return 0;
}
相关推荐
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页