C语言 您所在的位置:网站首页 int包含几个字节的数组怎么写 C语言

C语言

2023-09-15 14:15| 来源: 网络整理| 查看: 265

(目录)

一、一维数组 1、一维数组的创建

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

type_t arr_name [const_n]; //type_t 是指数组的元素类型 //arr_name是数组名 //const_n 是一个常量表达式,用来指定数组的大小

数组创建,[ ]必须为常量表达式。

//数组类型 数组名 [数组元素个数] = {初始化} int arr [10] = { 0 }; 2、一维数组的初始化

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

int arr1[10] = { 1,2,3 }; //不完全初始化 int arr2[] = { 1,2,3,4 }; int arr3[5] = { 1,2,3,4,5 }; //完全初始化 char arr4[3] = {'a ', 98,'c'}; char arr5[] = { 'a ', ' b', 'c ' }; char arr6[] = "abcdef";

图片.png

这里我们要注意区分

char ch2[] = { 'b','i','t' }; char ch4[] = "bit";

图片.png

1,strlen 和 sizeof没有什么关联

2.strlen 是求字符串长度的-只能针对字符串求长度 ,求字符串的长度-'\0'之前的字符个数- -库函数 - 使用得引头文件

3.sizeof 计算变量、数组、类型的大小 - 单位是字节 - 操作符

3、一维数组的使用

对于数组的使用我们之前介绍了一个操作符︰[ ]下标引用操作符。它其实就数组访问的操作符。我们来看代码︰

#include //打印数组 int main() { int arr[10] = { 0 };//数组的不完全初始化 //计算数组的元素个数 int sz = sizeof(arr) / sizeof(arr[0]); //对数组内容赋值,数组是使用下标来访问的,下标从0开始。所以: int i = 0;//做下标 //输出数组的内容 for (i = 0; i < sz; ++i) { printf("%d ", arr[i]); } return 0; } //打印字符串 int main() { char arr[] = "abcdef";//[a][b][c][d][e][f][\0] //printf("%c\n", arr[3]); int i = 0; int len = strlen(arr); for(i=0; i arr[j + 1]) { int tmp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = tmp; } } } } int main() { int arr[] = { 9,8,7,6,5,4,3,2,1,0 }; int sz = sizeof(arr) / sizeof(arr[0]); printf("排序前:"); print(arr, sz); //冒泡排序,进行升序排列 bubble_sort(arr, sz); printf("排序后:"); print(arr, sz); return 0; }

图片.png

冒泡排序法优化:当我们要排序的数组本身就是有序的时候,或者说数组排序的时候排好前几项就已经有序了,这时候按照上面的方法还要进行两两比较,效率就比较低,对此我们进行想要的优化。

#include void print(int arr[], int sz) { int i = 0; for (i = 0; i < sz; i++) { printf("%d ", arr[i]); } printf("\n"); } void bubble_sort(int arr[], int sz) { int i = 0; int j = 0; for (i = 0; i < sz - 1; i++)//确定冒泡排序的趟数 { int flag = 1;//用于判断比较是否继续 for (j = 0; j < sz - 1 - i; j++)//确定每一趟两两比较的次数 { if (arr[j] > arr[j + 1]) { int tmp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = tmp; flag = 0; } } if (flag == 1) { break; } } } int main() { int arr[] = { 9,8,7,6,5,4,3,2,1,0 }; int sz = sizeof(arr) / sizeof(arr[0]); printf("排序前:"); print(arr, sz); //冒泡排序,进行升序排列 bubble_sort(arr, sz); printf("排序后:"); print(arr, sz); return 0; } 四、思考:数组名到底是什么?

我们经常会说数组名是首元素地址,那么这个说法对不对呢?这里我们可以验证一下。

图片.png

可以看到两者一样,所以数组名是首元素地址。

但是要排除以下两种情况: ①sizeof(数组名)-- - 数组名表示整个数组-- - 计算的是整个数组的大小单位是字节 ② &数组名-- - 数组名表示整个数组-- - 取出的是整个数组的地址 除上述两种情况以外,其余情况数组名均表示首元素地址!

数组地址和数组首元素地址有什么区别?

两者的地址值是一样的,但是含义和使用不同。

数组地址 + 1表示跳过整个数组,首元素地址 + 1表示跳到第二个元素。

图片.png & arr + 1 与 & arr 相差40个字节 arr + 1 与 arr相差4个字节

三维数组及多维数组

三维数组具有高、宽、深的概念,或者说行、列、层的概念,即数组嵌套数组达到三维及其以上。是最常见的多维数组,由于其可以用来描述三维空间中的位置或状态而被广泛使用。 三维数组就是维度为三的数组,可以认为表示对该数组存储的内容使用了三个独立参量去描述,但更多的是认为该数组的下标是由三个不同的参量组成的。三维数组又被认为是二维数组的数组,而二维数组也可以认为是一维数组的数组。 数组这一概念主要用在编写程序当中,和数学中的向量、矩阵等概念有一定的差别,主要表现在数组内的元素可以是任意的相同数据类型,包括向量和矩阵。 对数组的访问一般是通过下标进行的。在三维数组中,数组的下标是由三个数字构成的,通过这三个数字组成的下标对数组的内容进行访问。 多维数组 三维或者三维以上的数组。 定义方式:type name[size1][size2]…[sizeN]; 例如,下面的声明创建了一个三维 4 . 3 . 2 整型数组: int threedim[4][3][2]; 图片.png



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有