C语言精通大牛笔记DAY3_数组指针与选择排序

本文详细讲解了C语言中数组指针的定义与操作,包括一维数组指针的使用、二维数组的定义、传递二维数组给函数以及选择排序算法的实现思路。深入理解指针和数组在程序中的关键作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C语言精通大牛笔记DAY3_数组指针与选择排序

1.数组指针
  • 定义方式
int arr[5] = {1,2,3,4,5};
//先定义数组类型,再通过类型定义出数组指针
typedef int(ARRAY_TYPE1)[5];//有5个int元素的数组    类型
ARRAY_TYPE1*p1 = &arr;
//先定义出数组指针的类型,通过类型创建数组指针变量
typedef int(*ARRAY_TYPE2)[5];
ARRAY_TYPE2 p2 = &arr;
for(int i = 0; i < 5;i++)
{
    printf("%d\t",*(*p2+i));
}
//直接定义数组指针变量		语法:数组元素类型(*数组指针变量名)[元素个数]
int(*p3)[5] = &arr;
2.二维数组
a) 定义方式:
//方法一:
int arr[3][3] = 
{
    {1,2,3},
    {4,5,6},
    {7,8,9}				//最后一行数组逗号可加可不加
};
//方法二:
int arr2[3][3] = {1,2,3,4,5,6,7,8,9};
//方法三:
int arr3[][3] = {1,2,3,4,5,6,7,8,9};

int(*p)[3] = arr;		//arr为指向第一行数组的指针

//通过p访问arr[2][2];
printf("%d\n",* (*(p+2)+2));
b) 二维数组做函数参数:
#define _CRT_SECURE_NO_WARNINGS
#include "stdio.h"
#include "stdlib.h"
#include "string.h"

void printArr(int(*p)[3],int len)
{
	for (int i = 0; i < len;i++)
	{
		for (int j = 0; j < 3; j++)
		{
			printf("%d ", *(*(p + i) + j));
		}
	}
	printf("\n");
}

int main()
{
	int arr[3][3] =
	{
		{1,2,3},
		{4,5,6},
		{7,8,9}				//最后一行数组逗号可加可不加
	};
	printArr(arr, 3);
	system("pause");
	return 0;
}
c) 二维数组指针定义
int arr[3][3] =
	{
		{1,2,3},
		{4,5,6},
		{7,8,9}				//最后一行数组逗号可加可不加
	};

int(*p)[3][3] = &arr;
3.选择排序法
  • 思路:
  • 假设最小数下标为0 int min = i
  • 让arr[min] 与 arr[j] 比较, 如果arr[j] 更小 , 则将 j 赋值给min
  • 比较第一轮后,如果i与min不相等,则交换arr[i] 与 arr[min]
  • 开始第二轮比较…
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值