指针学习(2)

数组与指针:
一个变量有地址,一个数组包含若干元素,每个数组元素都在内存中占用存储单元,它们都有相应的地址。

指针变量既然可以指向变量,当然也可以指向数组元素(把某一元素的地址放到一个指针变量中)。

所谓数组元素的指针就是数组元素的地址。

定义一个指向数组元素的指针变量的方法,与以前介绍的指向变量的指针变量相同。
例如:
int a[10];(定义a为10个整型数据的数组)
int *p;(定义p为指向整型变量的指针变量)

注意
如果数组为int型,则指针变量的基类型亦应为int型。

p=&a[10];
把a[0]元素的地址赋给指针变量p。
也就是使p指向a数组的第0号元素。

引用一个数组元素,可以用:
(1)下标法:如a[i]形式;
(2) 指针法:如
*(a+i)

*(p+i)

其中的a是数组名,p是指向数组元素的指针变量,其初值p=a。
注意:数组名即“翻译成数组的第一个元素的地址。
具体示例:

#include<stdio.h>
int main()
{
    
    
	int a[10];
	int i;

	printf("please input 10 numbers:\n");
		for(i=0;i<10;i++)
		{
    
    
	scanf("%d",&a[i]);
		}
		printf("output the 10 numbers again!\n");

		for(i=0;i<10;i++)
		{
    
    
			printf("%d",*(a+i));
		}
		printf("\n");
}

代码分析:

	for(i=0;i<10;i++)
		{
    
    
			printf("%d",*(a+i));
		}
		printf("\n");

这一段是重新输出输入的十个数,因为数组名a就是数组元素中的地址所以直接用取值符号*就可以进行10个数输出。

因此即便定义int *p;p=a;也是正确的。

猜你喜欢

转载自blog.csdn.net/yooppa/article/details/112724791