首页 > 其他分享 >数组

数组

时间:2023-03-25 23:07:12浏览次数:24  
标签:初始化 arr int 默认 地址 数组

1、一维数组

     ①创建:int arr[5] = {0};,其中5的位置只能放 字面常量 或者 #define定义的常量标识符

     ②初始化:

          不完全初始化int arr[5]={1,2};其余未初始化的默认为0(还剩三个)

                           char arr[5]={‘a','b’};其余未初始化的默认为0(还剩三个)

                           char arr[5]={‘a',98};其余未初始化的默认为0(还剩三个),与上者相同

                           char arr[5]="ab";其余未初始化的默认为0(还剩两个),此时有一个位置用来存放\0,最多只能存放4个字符,存放5个会出现越界访问

数组_数组

     ③打印

          打印每一个的值,只能用循环挨个打印printf("%d",arr[i]);

          打印每一个的地址,printf("%p",&arr[i]);,且数组在内存中是连续存放的,所以若是char类型的数组,地址之间差距为1,若为int型则差值为4

2、二维数组

     ①创建:int arr[3][4] = {0};

                  int arr[][4] = {0};,行可以省略,但是列不可以省略

     ②初始化:int arr[3][4] = {1,2,3,4,5};,其余未初始化的默认为0

                     int arr[3][4] = {{1,2,3},{4,5}};,其余未初始化的默认为0

     ③打印:

          打印每一个的值,只能用两层循环挨个打印printf("%d",arr[i][j]);

          打印每一个的地址,printf("%p",&arr[i][j]);,二维数组在内存中依然是连续存放的

3、strlen和sizeof的使用区别

     ①求字符串长度---strlen(arr);,所求的是\0之前的字符个数,且只能求字符串长度,头文件是string.h

     ②变量、数组、类型的内存容量度量---sizeof(arr);,包含\0在内

4、一维数组中的难疑点(数组名默认为arr)

     ①&arr == &arr[0],但是意义不同,

          &arr代表的整个数组,&arr+1直接跳过整个数组

     ②arr == &arr[0],都是首元素地址;所以*arr == arr[0]

     ③arr+1 == &arr[0]+1,代表的都是arr[1]的地址

5、二维数组中的难疑点(数组名默认为arr)

     ①&arr == arr == &arr[0] == arr[0],但是意义不同

          &arr代表着整个数组,&arr+1直接跳过整个二维数组

     ②arr == &arr[0] == arr[0],但是意义不同

          &arr[0]代表着整行数组,&arr[0]+1会直接跳转到下一行(&arr[1]),而且想要输出本行首元素要**(&arr[0])

          arr代表首行地址,arr+1会直接跳转到下一行,基本等同于&arr[0],输出时同样要**(arr)才能输出首元素

          arr[0]代表的是本行首元素地址,arr[0]+1代表的是本行第二个元素地址(&arr[0][1]),输出时要*(arr[0])即可

     ③*(arr+1) == *(&arr[0]+1) == arr[1]

        *(arr[0]+1) == *(arr[0][1]) == 具体数值

6、只有sizeof(arr)中的arr代表着整个数组的大小,其余之外的都是首元素地址或者首行地址

7、两个数组数值交换

     只能采用arr[i]=arr[j],再加个temp中间变量挨个交换的办法

标签:初始化,arr,int,默认,地址,数组
From: https://blog.51cto.com/u_13606048/6149651

相关文章

  • 字符串转化为数组
    字符串转化为数组一、s.spilt() Scannerin=newScanner(System.in);Strings=in.nextLine();​String[]a=s.spilt("");Arrays.toString(a); 二、toCharA......
  • AcWing 第 96 场周赛 T3-4878. 维护数组
    https://www.acwing.com/problem/content/4881/输入样例1:52218112153121221421322123输出样例1:364输入样例2:5410161151551......
  • 1、删除排序数组中的重复项
    给你一个升序排列的数组nums,请你原地删除重复出现的元素,使每个元素只出现一次,返回删除后数组的新长度。元素的相对顺序应该保持一致。由于在某些语言中不能......
  • Java入门_一维数组_第三题_数组反转
    题目:数组反转要求:把数组的内容反转。如:arr{11,22,33,44,55,66}-->{66,55,44,33,22,11}。思路-1通过具体实例得,每一次都是将arr[i]和......
  • 4878. 维护数组
    维护数组分析:分别维护两个值sum1,sum2,其他套线段树板子实现:structNode{intl,r;intminv;intsum1,sum2;}tr[N<<2];voidpushup(Node&u,N......
  • 数组指针
    一、概念下面哪个是数组指针?int*p1[10];int(*p1)[10];int(*p)[10];解释:p先和*结合,说明p是一个指针变量,然后指向一个大小为10的整型数组,所以p是一个指针,指向整型数组,叫做......
  • js 数组与对象的区别
    js数组与对象的区别 学习javascript的时候,我曾经一度搞不清楚”数组”(array)和”对象”(object)的根本区别在哪里,两者都可以用来表示数据的集合。 比如有一个数......
  • 由“交卷”功能引发的思考——对比两个字符串数组的差异
    最近在做一个答题系统,在交卷的时候需要判断客观题的答题情况客观题的题型有单选题、多选题、判断题其中判断题可以当做单选题处理,而单选题也可以当做标准答案长度为一的......
  • PHP二维数组排序|PHP二维数组去重
    二维数组排序functionarray_sort($arr,$keys,$order=0){ if(!is_array($arr)){ returnfalse; } $keysvalue=array(); foreach($arras$key=>$val){......
  • hdu-4630(树状数组)
    题目:Lifeisagame,andyouloseit,soyousuicide.Butyoucannotkillyourselfbeforeyousolvethisproblem:Givenyouasequenceofnumbera1,a2,...,an.T......