C语言中的数组

数组是c语言中的一种复合数据类型,是相同数据类型的有序集合

#include"stdio.h"
#include"string.h"
#include"stdlib.h"
int main()
{
    int a=10;
    int Array[10]={1,2,3,4,5,6,7,8,9,10};//定义一个可以存放十个int型数据的数组
    int *pArr=NULL;
    pArr=Array;
    //Array=&a;
    printf("%d\n",Array);
    printf("%d\n",Array+1);
    printf("pArr[5]:%d\n",pArr[5]);
    printf("*(pArr+5):%d\n",*(pArr+5));
    pArr=Array+3;
    printf("pArr:%d\n",*pArr);
    printf("pArr[-1]:%d\n",pArr[-1]);
    return 0;
}

运行结果
C语言中的数组_第1张图片
通过以上代码可以知道

  • 数组名是一个指针,而且是常量指针,不可改变指向
  • 数组名指向数组的第一个元素并不指向整个数组,因为步长不是整个数组的长度
  • 可以使用指针访问数组元素和使用数组下标访问数组元素一样
  • [ ]中的数字代表偏移量

数组与指针的区别

  1. 数组并不是指针。
  2. 指针保存的是数据的地址,数组保存数据本身,指针间接访问数据,首先取得指针的内容,把他做为地址,从这个地址提取数据;数组直接访问数据
  3. 数组做为函数参数时会退化为指针。

多维数组

int main()
{
    char marray[3][10]={"abc","bfrtg","lfjllif"};
    //char *p=marray;
    char (*p)[10];
    p=marray;//指向数组的指针
    printf("marray[0]:%s\n",marray[0]);
    printf("marray[1]:%s\n",marray[1]);
    printf("marray[1][2]:%c\n",marray[1][2]);
    printf("*(*(marray+1)+2):%c\n",*(*(marray+1)+2));
    printf("p:%s\n",*p);
    printf("p:%s\n",*(++p));
}

C语言中的数组_第2张图片

  • 多维数组其实是一个数组的数组,数组名也是一个常量指针,指向他的第一个数组元素,是一个数组指针,可以通过指针访问数组元素,* (*(marray+i)+j)与marray[i][j]是一样的。 char (*p)[10]声明数组指针。

你可能感兴趣的:(c语言)