Mr_zhou1111的博客

让我们一起享受编程带来的快乐

数组一些相关运算

:一维数组

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

数组的创建方式: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;
}



阅读更多
个人分类: C语言
上一篇c语言中一些常用的操作符
下一篇顺序表应用
博主设置当前文章不允许评论。

没有更多推荐了,返回首页

关闭
关闭