首页 > 其他分享 >数组

数组

时间:2022-10-04 13:34:11浏览次数:59  
标签:初始化 arr int 数组名 地址 数组

1.一维数组的创建和初始化

一维数组在内存中是连续存放的

数组的创建:数组是一组相同类型元素的集合。数组的创建方式:

type_t    arr_name    [const_n];

type_t  是指数组的元素类型

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

数组的初始化: int arr1[10]={1,2,3}; 不完全初始化,剩下的默认为0

                            char arr2[10]={"abc"};存储的时候是,a,b,c,\0,剩下的默认为0

                            char  arr3[10]={'a','b','c'};存储的时候,是'a','b','c',剩下的为0

sizeof和strlen 的区别:

sizeof是计算变量,数组,类型所占空间的大小,单位是字节,也包括\0——它是一个操作符

strlen 是只能字符串求长度—‘\0’之前的字符个数,不包括‘\0’。——它是库函数,得引头文件

2.二维数组

二维数组在内存中的存储是连续的

数组_数组

二维数组的初始化:

int arr[3][4]={1,2,3,4,5};//创建的数组是3行4列,这样初始化的话,第一行是1,2,3,4第二行是5,0,0,0,第三行是0,0,0,0。

int arr[3][4]={{1,2,3},{4,5}};//创建的数组是3行4列,这样初始化的话,第一行是1,2,3,0第二行是4,5,0,0,第三行是0,0,0,0

二维数组初始化的时候可以省略行但是不能省略列

如:正确的初始化方式:int arr[][4]={{1,2,3},{4,5}}

         错误的初始化方式:int arr[][]={{1,2,3},{4,5}};

行与列的下标都是从0开始的

3.数组的应用——冒泡排序

冒泡排序就是把一行乱序的数字,把第一个数字与其他数字两两比较,知道与最后一个比较结束。然后再用第二个数字依次和除第一个数字以外的数字相比较大小排序。

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>

#include <stdlib.h>

void bubble_line(int arr[],int sz)

{

       int i = 0;

       for (i = 1; i < sz; i++)

       {

              int flag = 1;//此处设置一个标志,当一个数组中的顺序本来就是顺序,或者在中途已经拍好顺序的时候,后续的比较就不必进行

              int j = 0;

              for (j = 0; j < sz - i; j++)

              {

                      int temp = 0;

                      if (arr[j] > arr[j + 1])

                      {

                             temp = arr[j];

                             arr[j] = arr[j + 1];

                             arr[j + 1] = temp;

                             flag = 0;

                      }

              }

              if (flag ==1)

              {

                      break;

              }

       }

}

int main()

{

       int arr[] = { 9,1,2,8,4,5,6,7,3,0 };

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

       int i = 0;

    bubble_line(arr,sz);

       for (i = 0; i < 10; i++)

       {

              printf("%d  ", arr[i]);

       }

       return 0;

}

4.数组名就是首元素的地址

int main()

{    

    int arr[]={0,1,2,3,4,5,6,7};

    printf("%p\n",arr);

    printf("%p\n",&arr[0]);

    printf("%p\n",&arr);

    return 0;

}

最后得出的结果是一样的,但是前两个取出的是数组中首位元素的地址,第三个表示的是取出的是整个数组的地址的首地址,是一个范围的起始地址。

结论:数组名是数组首元素的地址(有两个例外)

1.sizeof(数组名),计算整个数组的大小,单位是字节,sizeof内部单独放一个数组名,数组名表示整个数组。

2.&数组名,取出的是数组的地址。&数组名,取出的是整个数组的地址。













标签:初始化,arr,int,数组名,地址,数组
From: https://blog.51cto.com/u_15760583/5731201

相关文章

  • 数组循环右移2.0
    1.第一次:1,2测试点错误错误原因:忘了m大于n的情况=-=~~第二次:主函数添一个m%n就行~;PS:其他方法1:递归+将最后一个元素保存后,元素整体向前移          2:投机......
  • 【Azure 环境】Azure Resource Graph Explorer 中实现动态数组数据转换成多行记录模式
    问题描述想对Azure中全部VM的NSG资源进行收集,如果只是查看一个VM的NSG设定,可以在门户页面中查看表格模式,但是如果想把导出成表格,可以在AzureResourceGraphExplorer中查找......
  • Java手写实现链表队列和数组队列【数据结构与算法】
    packagealgorithm;/**@authorAdministrator@date2022-09-1317:50*/publicclassQueueLinked{privatestaticclassNode{Eitem;Nodenext;publicNode(Eitem,N......
  • 冒泡数组练习
    冒泡排序的思想:两两相邻的元素进行比较,并且可能的话需要交换!#define_CRT_SECURE_NO_WARNINGS1#include<stdio.h>#include<string.h>voidbubble_sort(intarr[],intsz)/......
  • 一维数组
    #define_CRT_SECURE_NO_WARNINGS1#include<stdio.h>#include<string.h>intmain(){charch5[]="bit";charch6[]="'b''i''t'";printf("%d\n",strlen(ch5));......
  • 【C语言_13】多维数组
    1.什么是多维数组?   C语言中的多维数组(multidimensionalarray)其实就是使用数组作为数组的元素。n维数组的元素是n-1维数组。例如,二维数组的每个元素都是一维数......
  • 27.数组类
    01数组类.cpp:#pragmawarning(disable:4996)//2022年10月2日20:33:53#include<iostream>usingnamespacestd;#include"MyArray.h"voidprintMyArray(MyArray&ar......
  • java---冒泡排序和稀疏数组的学习
    一.冒泡排序1.冒泡排序无疑是最为出名的排序算法,总共有8大排序2.冒泡代码相当简单,两层循环,两层冒泡轮数,里面依次比较3.我们看到的嵌套循环,应该立马就可以的出这个算法的......
  • java---数组Arrays类学习
    一.Arrays类1.数组的工具类java.util.Arrays2.由于数组对象本身并没有什么方法可以供我们调用,但API中提供了一个工具类Arrays供我们使用,从而可以对数据对象,进行一些基本......
  • 数组越界问题
    源于极客时间数据结构我看到评论区的答案各式各样,于是问了一位大佬,他和我说这是一个未定义行为,每台电脑内存和存储空间的分配方式不尽相同,不需要纠结。大概,可能,类似于ff......