C初识数组

来源:互联网 发布:ubuntu 16.04 mongodb 编辑:程序博客网 时间:2024/06/07 12:26

数组

一维数组

一维数组的创建

类型 数组名[数组空间大小]
例如

            int arr[10];            char arr2[10];             float arr3[10];            double arr4[20];

值得注意的点: [ ]中必须是常量来指定数组的大小

一维数组的初始化

数组的初始化是指,在创建数组时给数组的内容一些合理初始值(初始化)。

        int arr1[10]={0};        int arr2[]={0,1,2,3,4,5,6,7,8,9};        char arr3[10]={'a',98,'c'};        char arr4[]={'a','b','c','d'};        char arr5[]={"hello my girl !"};            

值得注意的点:数组在创建时,如果不想指定数组的大小,就需要对数组初始化。数组元素的个数由初始化内容来确定。But

char arr1[]="abc"           //'a''b' 'c' '\0'char arr2[]={'a','b','c'};  //'a''b' 'c' char *p="abcdef";           //p的内存中只存了字符a的地址

一维数组的使用和存储

1、对于数组我们需要使用下标引用操作符:[]。

#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<windows.h>int main(){    int a[10]={0};    int i=0;    for(i=0;i<10;i++)    {        a[i]=i;     }    for(i=0;i<10;i++)    {        printf("%d  ",a[i]);//依次打印数组的值        printf("%p\n",&a[i]);//依次打印数组中各元素的地址    }    system("pause");return 0;}

2、数组在内存中是连续存放的。
3、内存中的一个内存单元(一个字节)对一个一个地址。
拓展:
int a=0;
printf(“%p”,&a);//打印的是四个字节中最低地址的那个字节的地址
4、指针在32位平台大小是4个字节,64位平台是8个字节。
5、指针可以理解为一个变量,是一个专门用来存放地址的变量。

一维数组的指针访问

#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<windows.h>int main(){    int arr[]={1,2,3,4,5,6,7,8,9,0};    printf("%p\n",arr);//数组首元素的地址相当于数组的指针代表数组地址    printf("%d\n",*arr);//数组首元素地址解引用,打印的是数组的首元素的值    system("pause");return 0;}

6、数组的数组命其实数组首元素的地址

#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<windows.h>int main(){    int arr[10]={0};    int i=0;    int *p=arr;    for(i=0;i<sizeof(arr)/sizeof(arr[0]);++i)    {        *(p+i)=i;    }    for(i=0;i<sizeof(arr)/sizeof(arr[0]);++i)    {        printf("&arr[%d]=%p ",i,&arr[i]);//打印每一个元素的地址        printf("%d\n",*(p+i));//解引用,打印每一个数组    }    printf("%p\n",arr+i);//打印每一个元素的地址    system("pause");return 0;}

**二维数组

int arr[3][4]={{1,2},{3,4}}
二维数组在内存中的存储也是连续

#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<windows.h>int main(){    int a[]={1,2,3,4};    printf("%d\n",sizeof(a));    printf("%d\n",sizeof(a+0));    printf("%d\n",sizeof(*a));    printf("%d\n",sizeof(a+1));    printf("%d\n",sizeof(a[1]));    printf("%d\n",sizeof(&a));    printf("%d\n",sizeof(&a+1));    printf("%d\n",sizeof(&a[0]));    printf("%d\n",sizeof(&a[0]+1));    system("pause");return 0;}
原创粉丝点击