学习日志11.27

c高级真几把难

终于到数组了,虽然编排得很乱

数组

1,第一种,sizeof(arr)计算的整个数组的大小;第二种,对数组名取地址,步长是整个数组长度,&arr,&arr+1。除此之外一维数组名都是指向数组第一个元素的指针

2,arr[i]=*(arr+1),p[-1]=*(p-1)

3,数组指针,int *p=&arr  //报错,左右指针步长不一样

改为,int(*p)[5]=&arr;//数组指针,*p就是arr

for(int i=0;i<5;i++)  printf("%d",(*p)[i]);

总结,数组指针语法,数组元素类型 (* 数组指针变量名称) [元素个数]

4,二维数组,int parr[3][3]=int (*parr)[3];二维数组是指向第一行数组的 数组指针

选择排序,例子1,对数组进行选择排序

存疑,打印不出结果来

#include<stdio.h>
void mysort(int arr[], int len)
{
	for (int i = 0; i < len; i++)
	{
		int min = i;//先假定最小值下标
		for (int j = i + 1; j < len; j++)
		{
			if (arr[min] > arr[i])
			{
				min = i;//更新最小值下标
			}
		}
		if (i != min)//判断假定的i和min是否一样,如果不一样,交换这两个下标对应元素
		{
			int temp = arr[i];
			arr[i] = arr[min];
			arr[min] = temp;
		}
	}

}
void myprint(int arr[],int len)
{
	for (int i = 0; i < len; i++)
	{
		printf("%d",arr[i]);
	}
}
void test01()//选择排序,从小到大排成升序
{

	int arr[5] = {3,5,1,2,4};
	int len = sizeof(arr) / sizeof(arr[0]);
	mysort(arr,len);//定义一个选择排序函数
	myprint(arr, len);//定义一个print函数
}
int main()
{
	test01;


	return 0;
}

例子二,对指针数组(是数组,里面放的全是指针)

妈的,怎么不出结果

#include<stdio.h>
void mysort(char* arr[], int len)
{//利用选择排序,排成降序
	for (int i = 0; i < len; i++)
	{
		int max = i;//假定最大值下标
		for (int j = i + 1; j < len; j++)
		{
			//if (arr[max] < arr[j])不能更新最大值下标,要对abc字符串进行比较
			if (strcmp(arr[max]), arr[j == -1]);
			{
				max = j;//更新最大值下标
			}
		}
		if (i != max)
		{
			char* temp = arr[i];
			arr[i] = arr[max];
			arr[max] = temp;
		}
	}
}
print(char **arr,int len)
{
	for (int i = 0; i < len; i++)
	{
		printf("%d\n",arr[i]);
	}
}
//指针数组,数组中每个元素都是指针,使用选择排序算法,进行降序排序,想要排序成fff,eee,ddd,ccc,aaa
void test02()
{
	char* parr[] = {"aaa","bbb","ccc","ddd","fff","eee"};
	int len = sizeof(parr) / sizeof(char *);
	//printf("%d",len);
	//存疑,为什么不能打印出len的值
	mysort(parr, len);
	print(parr, len);
}
int main()
{
	test02;
	return 0;
}

来人呐,上结构体!

阶段二.3.0109结构体使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值