数组一些相关运算

原创 2018年04月16日 23:55:42

:一维数组

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

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



一些简单的数组运算

char arr[] = "abcdef";//7 printf("%d\n", sizeof(arr));//7 printf("%d\n", sizeof(arr+0));//4 print...
  • sunwennuan789
  • sunwennuan789
  • 2017-04-09 22:53:48
  • 206

c语言数组、数组相关的计算

数组 1.数组的创建: 元素类型 数组名 [常量或者常量表达式]  如:int arr1[10]; 注:即使是被const修饰的变量也不能作为[]中的内容,它本质上依然属于变量,只是具有常量...
  • lyl194458
  • lyl194458
  • 2016-11-18 08:30:41
  • 1557

c语言中关于数组的一些基本运算

//一维数组 //补充知识:当数组名a单独放在sizeof()内部(即 sizeof(a) )时,a表示整个数组; //当数组名a单独放在&后面时(即&a),a表示整个数组;其余的a都表示数组a首元素...
  • xu1105775448
  • xu1105775448
  • 2017-04-20 20:32:16
  • 1658

Java数组运算

在使用Java进行程序设计的时候,当为一个long型变量赋值一个整数常量时,如果这个值超过int型数据的取值范围,程序就会出现编译错误,但是有一种情况程序不会出错的,就是将多个int型数据进行算数运算...
  • l4432321
  • l4432321
  • 2016-09-05 21:53:32
  • 799

40.类和对象:一些相关的BIF

一些相關BIFissubclass(class, classing)用来判断类参数class是否是类型参数classinfo的子类>>> class A: pass >>> clas...
  • Ejikuangren
  • Ejikuangren
  • 2016-07-26 09:23:42
  • 172

数组运算相关学习

数组的运算 sizeof运算的是地址长,也就是一个对象或者类型所占的内存字节数。 sizeof()中,只有sizeof(a)指的是数组总大小,&a指的是数组的地址。除此之外,其他遇到数组名都是指的...
  • Bella_wx
  • Bella_wx
  • 2017-04-23 15:23:11
  • 119

数组相关运算

数组有关运算(sizeof与strlen) 一维数组 int a[] = {1,2,3,4}; printf("%d\n",sizeof(a));//16---a表示整个数组 printf("%d\n...
  • shidantong
  • shidantong
  • 2017-10-16 00:51:30
  • 121

数组的相关运算

数组的相关运算 相关知识概述: 1.  sizeof          sizeof不是函数,而是字节运算符,其返回值是变量声明后所占的内存数,不是实际长度。sizeof返回定义的数组时,编译...
  • Jasmine_yaoyao
  • Jasmine_yaoyao
  • 2017-04-04 16:40:50
  • 172

C语言中将数组内的元素进行运算

之前以为数组可以像普通变量一般直接进行数学运算,然而实际编程后发现如果就像b+=b[1],这样并不能实现数组内的数据进行加减,而是加减数组的地址,当然也可以通过先将数组内的数据取出来再进行运算,但是这...
  • super_marie
  • super_marie
  • 2017-04-27 20:47:08
  • 1118

OpenCV对数组(矩阵)的一些操作

OpenCV - Operations on Arrays 对数组(矩阵)的一些操作 Function (函数名) Use (函数用处) Author : Ggic...
  • Jie_Xiao
  • Jie_Xiao
  • 2015-05-25 09:37:01
  • 1110
收藏助手
不良信息举报
您举报文章:数组一些相关运算
举报原因:
原因补充:

(最多只允许输入30个字)