C语言数组练习

您所在的位置:网站首页 c语言数组逆序输出函数 C语言数组练习

C语言数组练习

2024-07-09 06:19| 来源: 网络整理| 查看: 265

内容

1.数组知识点 2.数组置换 3.数组逆序 4.冒泡排序

*1.数组知识点

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

int arr1[] = {1,2,3,4}; int arr2[5] = {1,2,3,4,5}; int arr3[2]={1}; //不完全初始化 int len = sizeof(arr1) / sizeof(arr1[0]); //计算数组元素个数,4

一维数组数组名的使用:

计算一维数组元素个数: * sizeof(数组名) / sizeof(数组名[0])获取数组中一个元素的地址: printf("%p\n", &arr1[3]); //%p 打印格式为指针型 ,指向该数组元素的地址.可以统计整个数组在内存中所占的长度; // sizeof(数组名) 数组存储在内存中分配的是一段连续的内存空间printf(“一维数组arr1的首地址为:%p\n”, arr1);数组名是常量,不能进行赋值操作(表达式是不可修改的左值);

注意: (1) 如果创建数组时,不想直接指定元素个数,就得进行初始化.如果明确了数组元素个数,未进行初始化的元素默认为0; 数组元素下标从0~len-1; (2) 使用printf()函数打印输出时, %d-格式为整型; %p-格式为指针型,用于打印变量地址; %s-表示打印为字符型;%f-表示打印为浮点型…

char str[]="hello"; char arr[]={'h','e','l','l','o'}; sizeof(str)=6 ; 一个字符串数组,在内存中字符串后面隐式包含’ \0’,一个字符占一个字节;strlen(str)=5; arr数组表示含有字符型变量5个单字符的数组;strlen(arr);结果是一个随机数,strlen函数遍历字符串遇到’\0’才会停之;arr数组元素检测完还会继续向后检测,直到遇到’\0’是才终止,因此答案为不确定;

二维数组的创建同理,相当于两个一维数组,多了一维:

int arr1[][2]={0}; int arr2[2][2]={{1,2},{3,4}};

注意:二维数组在创建时不可省略第二维元素个数,也就是不可省略列向量的个数.

计算二维数组行数: sizeof(数组名) / sizeof(数组名[0])计算二维数组列数: sizeof(数组名[0]) / sizeof(数组名[0][0])计算二维数组所占内存大小: sizeof(数组名)计算二维数组第2行所占内存大小: sizeof(数组名[2])计算二维数组第一行第二列元素地址: &数组名[0][1] #include #include int main() { int arr1[] = { 3,4,2,6 }; int arr2[] = { 9,8,0,1 }; printf("一维数组arr1的首地址为:%p\n", arr1); printf("一维数组arr1[0]元素的地址:%p\n", &arr1[0]); printf("一维数组arr1[1]元素的地址:%p\n", &arr1[1]); int len1 = sizeof(arr1) / sizeof(arr1[0]); int len2 = sizeof(arr2) / sizeof(arr2[0]); printf("一维数组arr1的长度为:%d\n", len1); printf("一维数组占内存大小:%d\n", sizeof(arr1)); int arr[][3] = { 1,2,3,4,5,6 }; int row = sizeof(arr) / sizeof(arr[0]); int col = sizeof(arr[0]) / sizeof(arr[0][0]); printf("二维数组行数%d\n", row); printf("二维数组列数%d\n", col); printf("二维数组占内存大小:%d\n", sizeof(arr)); printf("二维数组第一行大小:%d\n", sizeof(arr[0])); printf("二维数组第一行地址:%p\n", &arr[0]); printf("二维数组第二行第一个元素地址:%p\n", &arr[1][0]); system("pause"); return 0; }

测试结果为: 在这里插入图片描述

*2.数组置换

要求: 将两个相同长度的数组进行元素交换. (1) 创建两个数组; (2) 判断两个数组长度是否相等; (3) 创建一个置换函数,进行数组元素交换.

注意: 数组作为函数参数时,只要传入的实参为数组,实际上传入时,数组名可以隐式转换为指向首元素的指针.所以不管形参是指针型还是数组型,给形参的都是一个指向数组首地址的指针.进行的都是地址传递.

代码实现:

#include #include //打印数组序列函数 void printA(int Arr[], int len) { for (int i = 0; i


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3