数组一些相关运算

:一维数组

定义:数组是一组相同类型元素的集合

数组的创建方式:type_t  arr_name  [ const_n]

type_t是指数组的元素类型

const_n是一个常量表达式,用来指定数组的大小

例如:int arr[10];

注意:数组的创建,[ ]中要一个常量才可以,不能使用变量;

数组的初始化:数组的初始化是指在创建数组的时候给数组的内容一些合理的初始值

例如:

int arr1[10]={1,2,3};

int arr2[ ]={'a','b','c'};

int arr3[ ]="abcd";

注意:1,数组是使用下标来访问的,下标是从0开始的;

         2,数组的大小可以通过计算得到;

          3,数组在内存重视连续储存的。

例如:int arr[10];

          int sz=sizeof(arr0/sizeof(arr[0]);/

二:二维数组

 (1)  二维数组的使用也是通过下标的方式;

 (2)二维数组在内存中也是连续储存的。

关于数组我们必须学会有关数组的一些运算。

例如:

一维数组:

    int a[] = {1,2,3,4};

{

     printf("%d\n",sizeof(a));          16
     printf("%d\n",sizeof(a+0));      4
     printf("%d\n",sizeof(*a));         4
     //*a == *(a+0) == a[0];
     //arr[i] ==> *(arr+i)
     printf("%d\n",sizeof(a+1));      4
     printf("%d\n",sizeof(a[1]));      4
     printf("%d\n",sizeof(&a));        4
     printf("%d\n",sizeof(*&a));    16
     printf("%d\n",sizeof(&a+1));   4
     printf("%d\n",sizeof(&a[0]));    4

     printf("%d\n",sizeof(&a[0]+1));  4

字符数组:

    char arr[] = {'a','b','c','d','e','f'};
    printf("%d\n", strlen(arr));            随机值
    printf("%d\n", strlen(arr+0));       随机值
    printf("%d\n", strlen(*arr));       错误
    printf("%d\n", strlen(arr[1]));      错误
    printf("%d\n", strlen(&arr));        随机值
    printf("%d\n", strlen(&arr+1));     随机值
    printf("%d\n", strlen(&arr[0]+1)); 随机值
     printf("%d\n", sizeof(arr));          6
     printf("%d\n", sizeof(arr+0));     4
     printf("%d\n", sizeof(*arr));        1
     printf("%d\n", sizeof(arr[1]));     1
     printf("%d\n", sizeof(&arr));      4
     printf("%d\n", sizeof(&arr+1));  4
     printf("%d\n", sizeof(&arr[0]+1)); 4
     char arr[] = "abcdef";    7
     printf("%d\n", strlen(arr));    6
     printf("%d\n", strlen(arr+0)); 6
     printf("%d\n", strlen(*arr));   错误
     printf("%d\n", strlen(arr[1]));   错误
     printf("%d\n", strlen(&arr));      6
     printf("%d\n", strlen(&arr+1));  随机值
     printf("%d\n", strlen(&arr[0]+1));  5


     printf("%d\n", sizeof(arr));//7
     printf("%d\n", sizeof(arr+0));//4
     printf("%d\n", sizeof(*arr));//1
     printf("%d\n", sizeof(arr[1]));//1
     printf("%d\n", sizeof(&arr));//4
     printf("%d\n", sizeof(&arr+1));//4
    printf("%d\n", sizeof(&arr[0]+1));
    char *p = "abcdef";
    printf("%d\n", strlen(p));      6
    printf("%d\n", strlen(p+1));   5
    printf("%d\n", strlen(*p));   错误
    printf("%d\n", strlen(p[0]));错误
    printf("%d\n", strlen(&p));   随机值
    printf("%d\n", strlen(&p+1)); 随机值

    printf("%d\n", strlen(&p[0]+1));  5

二维数组:

    int arr[3][4];
    *(*(arr+1)+0)
    *(*(arr)) = *(*(arr+0)+0)
        *arr = *(arr+0)
    printf("%d\n", sizeof(p));    4
    printf("%d\n", sizeof(p+1));   4
    printf("%d\n", sizeof(*p));   1
    printf("%d\n", sizeof(p[0]));   1
    printf("%d\n", sizeof(&p));    4
    printf("%d\n", sizeof(&p+1));  4
    printf("%d\n", sizeof(&p[0]+1));  4
    
    int a[3][4] = {0};
    int *p = a+1;
    short s = 1;
    int n = 10;
    printf("%d\n", sizeof(s=n+1));   2;
    printf("%d\n",sizeof(a));    48
    printf("%d\n",sizeof(a[0][0]));  4
    printf("%d\n",sizeof(a[0]));     16
    printf("%d\n",sizeof(a[0]+1));  4
    printf("%d\n",sizeof(a+1));      4
    printf("%d\n",sizeof(&a[0]+1));  4
    printf("%d\n",sizeof(*a));   16
    return 0;
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值