【C语言/知识梳理/期末复习】指针(二)(附思维导图)

一、数组名的理解

(1)一般情况

  • 数组名就是数组⾸元素(第⼀个元素)的地址。

(2)特殊情况(唯二)

  • sizeof(数组名),sizeof中单独放数组名,这⾥的数组名表⽰整个数组,计算的是整个数组的大⼩,单位是字节

  • &数组名,这⾥的数组名表⽰整个数组,取出的是整个数组的地址(整个数组的地址和数组⾸元素的地址是有区别的)

(3)思考

(4)arr和&arr的区别

  • &arr[0]和&arr[0]+1相差4个字节,arr和arr+1 相差4个字节,是因为&arr[0] 和 arr 都是⾸元素的地址,+1就是跳过⼀个元素。
  • 但是&arr 和 &arr+1相差40个字节,这就是因为&arr是数组的地址,+1 操作是跳过整个数组的

二、使用指针访问数组

三、一维数组传参的本质
 

(1)本质

  • 数组传参本质上传递的是数组⾸元素的地址,所以函数形参的部分理论上应该使⽤指针变量来接收⾸元素的地址

(2)总结

  • ⼀维数组传参,形参的部分可以写成数组的形式,也可以写成指针的形式。

  • sizeof(arr) 计算的是⼀个地址的⼤⼩(单位字节)⽽不是数组的⼤⼩(单位字节)。正是因为函数的参数部分是本质是指针,所以在函数内部是没办法求的数组元素个数的。

四、冒泡排序

(1)核心思想

  • 相邻的两个元素比较,如果不满足顺序就交换

(2)代码呈现

#include<stdio.h>

void Bubble_sort(int arr[], int sz)
{
	int i = 0;
	for (i = 0; i < sz - 1; i++)
	{
		for (int j = 0; j < sz - 1; j++)
		{
			if (arr[j] > arr[j + 1])
			{
				int temp = arr[j];
				arr[j] = arr[j + 1];
				arr[j + 1] = temp;
			}
		}
	}
}
int main()
{
	int arr[10] = { 2,4,5,8,1,3,7,9,0,6 };
	int sz = sizeof(arr) / sizeof(arr[0]);
	Bubble_sort(arr, sz);
	for (int i = 0; i < sz; i++)
	{
		printf("%d ", arr[i]);
	}
	return 0;
}

五、二级指针

(1)铺垫知识

  • int* p = &a(p是指针变量)

(2)二级指针

  • int * * pp= &p;,int*组合起来证明pp指向的对象(p)的类型是int*

六、指针数组

(1)概念:存放指针的数组

(2)

  • 指针数组的每个元素是地址,⼜可以指向⼀块区域

七、指针数组模拟二维数组

  • arr [ i ] === *(arr + i ) {计算机计算形式} arr[i][j] ===*(* (arr+i) +j)


  • parr[i]是访问parr数组的元素,parr[i]找到的数组元素指向了整型⼀维数组,parr[i][j]就是整型⼀维数组中的元素。
  • 上述的代码模拟出⼆维数组的效果,实际上并⾮完全是⼆维数组,因为每⼀⾏并⾮是连续的。

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-30 02:08:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-30 02:08:01       101 阅读
  3. 在Django里面运行非项目文件

    2024-01-30 02:08:01       82 阅读
  4. Python语言-面向对象

    2024-01-30 02:08:01       91 阅读

热门阅读

  1. 中兴设备show命令整合,赶紧收藏!

    2024-01-30 02:08:01       58 阅读
  2. C++默认成员函数(二)

    2024-01-30 02:08:01       52 阅读
  3. mysql的联合索引利用情况

    2024-01-30 02:08:01       54 阅读
  4. CSS transition(过渡效果)详解

    2024-01-30 02:08:01       62 阅读
  5. Hive环境准备

    2024-01-30 02:08:01       51 阅读
  6. 【大数据】Flink SQL 语法篇(一):CREATE

    2024-01-30 02:08:01       50 阅读
  7. 牛客网-----------[NOIP2018]标题统计

    2024-01-30 02:08:01       59 阅读
  8. 【leetcode刷刷】回溯:77.组合

    2024-01-30 02:08:01       55 阅读
  9. 前端 HTML 知识点之 HTML 介绍

    2024-01-30 02:08:01       50 阅读
  10. js的编码和解码

    2024-01-30 02:08:01       54 阅读
  11. 【基础算法练习】前缀和与差分模板

    2024-01-30 02:08:01       52 阅读