0
点赞
收藏
分享

微信扫一扫

sqli-labs靶场通关攻略(四十一到四十五关)

雪域迷影 2024-08-28 阅读 27

追赶日月,不苟于山川。

3.数组的越界

数组的下标是有范围限制的。

数组的下标规定是从0开始的,如果数组有n个元素,最后一个元素的下标就是n-1。

所有数组的下标如果小于0,或者大于n-1,就是数组越界访问了,超出了数组合法空间的访问。

C语言本身是不做数组下标的越界检查,编译器也不一定报错,但是编译器不报错,并不意味着程序就是正确的。

所以程序员写代码时,最好自己做越界的检查。

二维数组的行和列也可能存在越界行为。

4.数组作为函数参数

往往我们在写代码的时候,会将数组作为参数传给函数。

比如:要实现一个冒泡排序函数(冒泡排序的核心思想是:两个相邻的元素进行比较

一趟冒泡排序让一个数据来到它最终应该出现的位置上。所以如果有n个元素进行冒泡排序,我们需要进行n-1趟冒泡排序。

(数组传参的时候,形参有两种写法:1.数组 2.指针)

冒泡排序:

#include <stdio.h>
//冒泡排序
void bubble_sort(int arr[],int sz)//形参是数组的形式,方块内的数值可写可不写
//地址应该使用指针来接收,所以arr这里看似是数组,本质是指针变量
{
	//趟数
	int i = 0;
	for (i = 0; i < sz - 1; i++)
	{
		//一趟冒泡排序
		int j = 0;
		for (j = 0; j <sz-1-i ; j++)//sz-1-i能够使得比较的对数在减少
		{
			if (arr[j]>arr[j + 1])
			{
				//交换
				int tmp = arr[j];
				arr[j] = arr[j + 1];
				arr[j + 1] = tmp;
			}
		}
	}
}
int main()
{
	//把数组里的数据排成升序
	int arr[] = { 9,8,7,6,5,4,3,2,1,0 };
	//冒泡排序算法对数组进行排序
	int sz = sizeof(arr) / sizeof(arr[0]);
	bubble_sort(arr, sz);//数组传参的时候直接传数组名
	//数组名本质上是:数组首元素的地址
	int i = 0;
	for (i = 0; i < sz; i++)
	{
		printf("%d ", arr[i]);
	}
	return 0;
}

举报

相关推荐

0 条评论