IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 31天C语言——7,数组 -> 正文阅读

[数据结构与算法]31天C语言——7,数组


数组的本质:多个变量。
数组的长度不可变,且元素类型一致。

1,创建数组

创建指定长度的数组:

int a[10];

int类型,10个元素。

创建之后可以赋值:

int a[10]={1,2,3};

前三个为123,后面为0

也可以由赋值来决定长度:

int a[] = {1, 2, 3};

三个元素,123

2,sizeof

sizeof a:获取a占据的字节数

简单使用:int a[3]

#include <stdio.h>

int main() {
  int a[3];
  printf("%ld\n", sizeof a);
  return 0;
}

效果:12,3个4。

在这里插入图片描述
获取数组的长度:总字节数除以单位字节数。

#include <stdio.h>

int main() {
  int a[3];
  printf("%ld\n", sizeof a / sizeof a[0]);
  return 0;
}

效果:

在这里插入图片描述

3,下标访问

由下标可以访问数组的元素。
下标从0开始。

a[0]		数组a的第一个元素
a[1]		...第二个元素

由循环可以遍历一个数组。

#include <stdio.h>

int main() {
  int a[] = {1, 3, 2, 4, 6, 5, 7};
  for (int i = 0; i < sizeof a / sizeof a[0]; i++) {
    printf("%d\n", a[i]);
  }
  return 0;
}

效果:

在这里插入图片描述

4,内存探秘

%p:指针地址值

#include <stdio.h>

int main() {
  int a[] = {1, 3, 2, 4, 6, 5, 7};
  for (int i = 0; i < sizeof a / sizeof a[0]; i++) {
    printf("%d:%p\n", a[i], &a[i]);
  }
  return 0;
}

效果:每个加4,代表int。

在这里插入图片描述
结论:数组,在空间上是一块连续的内存。

十六进制:
8,9,A,B,C,D,E,F,0

5,多维数组

多维数组:数组的元素是数组。

#include <stdio.h>

int main() {
  int a[3][4];
  printf("%ld\n", sizeof a);
  return 0;
}

效果:48。
在这里插入图片描述
三行四列,十二个元素,乘以四。

也可以赋值,遍历:

#include <stdio.h>

int main() {
  int a[3][4] = {{1, 2, 3, 4}, {11, 22, 33, 44}, {111, 222, 333, 444}};

  int len1 = sizeof a / sizeof a[0];
  int len2 = sizeof a[0] / sizeof a[0][0];
  for (int i = 0; i < len1; i++) {
    for (int j = 0; j < len2; j++) {
      printf("%d\t", a[i][j]);
    }
    printf("\n");
  }
  return 0;
}

效果:

在这里插入图片描述

番外:数组与指针

数组名

数组名代表首个元素的指针。
解指针后,可以得到首个元素。

#include <stdio.h>

int main() {
  int arr[3] = {1, 2, 3};
  printf("%d\n", *arr);
  return 0;
}

效果:

在这里插入图片描述

简单使用

交换长度为2数组的两个值。

#include <stdio.h>

void swap(int *arr) {
	int temp = *arr;
	*arr = *(arr + 1);
	*(arr + 1) = temp;
}

int main() {
	int arr[2] = {11, 22};
	swap(arr);
	printf("%d,%d\n", arr[0], arr[1]);
	return 0;
}

效果:

在这里插入图片描述

分析:
swap(arr):传入的是,首个元素的地址指针。
temp = *arr:将首个元素的值赋值给temp。
*arr = *(arr + 1):首个元素的指针改为第二个元素的值。
*(arr + 1) = temp:第二个元素的指针改为temp。

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-04-27 11:31:56  更:2022-04-27 11:34:15 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 5:59:11-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码