您的位置:首页 > 编程语言 > C语言/C++

C语言 通过指针访问一维数组的几种方式,通过数组名访问一维数组

2017-09-25 10:37 316 查看
C语言中:

可以通过指针的++,--,+,-.以及关系运算符<(小于),>(大于),<=(小于等于)。。。来访问数组

也可以直接通过数组名,使用下标访问数组。这里把他封装成函数,以便后续复用。

#include<stdio.h>
#define ARRAY_LEN(array,len){ len=(sizeof(array) /sizeof(array[0]));}
//使用宏定义计算数组长度。
static void printArrayFromHead(int*,int);//函数声明
static void printArrayFromTail(int*,int);//函数声明
static void printArrayByHead(int*,int);
static void printArrayByTail(int*,int);
static void printArrayUseArrayName(int array[],int);
void main()
{
int array[]={1,2,3,4,5,6,7,8,9,10};
int length;
ARRAY_LEN(array,length);//计算数组长度
printArrayFromHead(array,length);
printArrayFromTail(array,length);
printArrayByHead(array,length);
printArrayByTail(array,length);
printArrayUseArrayName(array,length);

}
static void printArrayFromHead(int* array,int length)
{
int *p;//定义数组指针
p=&array[length-1];//指针p指向数组最后一个元素
int i;//循环变量;
printf("倒序打印数组为:");
for(i=length-1;i>=0;i--)
{
printf("%d ",*p);//通过“*”运算符取出指针p中存储的地址里面的数据
p--;//指针后退
}printf("\n");
}
static void printArrayFromTail(int* array,int length)
{
int* p;//定义指针变量
p=&array[0];//指向数组首地址
//    p=&array;//注意了这样写有错误,这样写的到的是局部指针变量的地址,不是数组的地址
int i;//循环变量;
printf("倒序打印数组为:");
for(i=0;i<length;i++)
{
printf("%d ",*p);//通过“*”运算符取出指针p中存储的地址里面的数据
p++;//指针前移
}printf("\n");
}
static void printArrayByHead(int* array,int length)
{
int *p;//定义数组的指针
p=&array[0];//指向第一个数组元素
printf("通过指针的比较来顺序访问数组:");
//数组存储是连续的,而且按地址从小到大顺序存储,
//        所以可以进行地址的比较来访问数组元素
while(p<=&array[length-1])
{
printf("%d ",*p);
p++;
}printf("\n");
}
static void printArrayByTail(int* array,int length)
{
int *p;//定义数组的指针
p=&array[length-1];//指向第一个数组元素
printf("通过指针的比较来顺序访问数组:");
//数组存储是连续的,而且按地址从小到大顺序存储,
//        所以可以进行地址的比较来访问数组元素
while(p>=&array[0])
{
printf("%d ",*p);
p--;
}printf("\n");
}
static void printArrayUseArrayName(int array[],int length)
{
//    int length;//指针长度
//    ARRAY_LEN(array,length);//调用宏计算数组长度
int i;
printf("通过数组名(固定指针)访问数组:");
for(i=0;i<length;i++)
{
printf("%d ",array[i]);
}
printf("\n");
}
结果:

倒序打印数组为:10 9 8 7 6 5 4 3 2 1
倒序打印数组为:1 2 3 4 5 6 7 8 9 10
通过指针的比较来顺序访问数组:1 2 3 4 5 6 7 8 9 10
通过指针的比较来顺序访问数组:10 9 8 7 6 5 4 3 2 1
通过数组名(固定指针)访问数组:1 2 3 4 5 6 7 8 9 10
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐