Pārlūkot izejas kodu

上传文件至 '指针2'

Creamo 3 gadi atpakaļ
vecāks
revīzija
db684f6ed4

+ 41 - 0
指针2/5、const修饰指针.cpp

@@ -0,0 +1,41 @@
+#include <iostream>
+
+//const修饰指针有三种情况:
+//1、const修饰指针   --- 常量指针
+//2、const修饰常量   --- 指针常量
+//3、const即修饰指针,又修饰常量
+#if(0)
+int main5()
+{
+	//1、const修饰指针   常量指针
+	int a = 10;
+	int b = 10;
+
+	const int* p = &a;     //指针指向的值不可以改  指针的指向可以改
+	//*p = 20;    错误
+	p = &b;
+
+
+
+	//2、const修饰常量   
+	int* p2 = &a;
+	int* const p2 = &a;    //指针常量
+	//指针的指向不可以改,指针指向的值可以改
+	*p2 = 100;
+	//p2 = &b;    错误
+
+
+
+	//3、const修饰指针和常量
+	const int* const p3 = &a;   //指针的指向和指针指向的值都不可以改
+	//*p3 = 100;   错误
+	//p3 = &b;     错误
+
+
+	system("pause");
+
+	return 0;
+}
+#endif
+
+//看const右侧紧跟着的是指针还是常量,是指针就是常量指针,是常量就是指针常量

+ 34 - 0
指针2/6、指针和数组.cpp

@@ -0,0 +1,34 @@
+#include <iostream>
+
+//利用指针访问数组中的元素
+#if(0)
+int main()
+{
+	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
+	std::cout << "数组中第一个元素为:" << arr[0] << std::endl;
+
+	int* p = arr;   //数组名就是数组arr的首地址
+	
+	
+	//利用指针来访问数组的第一个元素
+	std::cout << "利用指针访问第一个元素: " << *p << std::endl;
+	
+	p++;//让指针向后偏移四个字节
+	std::cout << "利用指针访问第二个元素:" << *p << std::endl;
+
+	std::cout << "利用指针遍历数组:" << std::endl;
+	int* p2 = arr;
+	for (int i = 0; i < 10;i++)
+	{
+		//std::cout << arr[i] << std::endl;
+		std::cout << *p2 << std::endl;
+		p2++;
+	}
+
+
+
+	system("pause");
+
+	return 0;
+}
+#endif

+ 48 - 0
指针2/7、指针和函数.cpp

@@ -0,0 +1,48 @@
+#include <iostream>
+
+//利用指针作函数参数,可以修改实参的值
+
+//实现两个数字进行交换的代码
+#if(0)
+void swap01(int a, int b)
+{
+	int temp = a;
+	a = b;
+	b = temp;
+
+	std::cout << "swap01 a =" << a << std::endl;
+	std::cout << "swap01 b =" << b << std::endl;
+}
+
+void swap02(int* p1, int* p2)
+{
+	int temp = *p1;
+	*p1 = *p2;
+	*p2 = temp;
+
+}
+
+int main()
+{
+	//1、值传递
+
+	int a = 10;
+	int b = 20;
+	swap01(a, b);
+
+
+	std::cout << "a = " << a << std::endl;
+	std::cout << "b = " << b << std::endl;
+
+	//2、地址传递
+	//如果地址传递可以修饰实参
+	swap02(&a, &b);
+
+
+	system("pause");
+
+	return 0;
+}
+#endif
+
+//总结:如果不想修改实参,就用值传递,如果想修改实参,就用地址传递。

+ 55 - 0
指针2/8、指针、数组、函数.cpp

@@ -0,0 +1,55 @@
+#include <iostream>
+
+//封装一个函数,利用冒泡排序,实现对整形数组的升序排序
+//例如数组:int arr[10] = {4,3,6,9,1,2,10,8,7,5}
+
+//冒泡排序函数            //参数1  数组的首地址  参数2  数组长度
+void bubbleSort(int *arr, int len)
+{
+	for (int i = 0; i < len - 1; i++)
+	{
+		for (int j = 0; j < len - i - 1; j++)
+		{
+			//如果 j > j+1 的值  交换数字
+			if (arr[j] > arr[j + 1])
+			{
+				int temp = arr[j];
+				arr[j] = arr[j + 1];
+				arr[j + 1] = temp;
+			}
+		}
+	}
+
+
+}
+
+//打印数组
+void printArray(int* arr, int len)
+{
+	for (int i = 0; i < len; i++)
+	{
+		std::cout << arr[i] << std::endl;
+	}
+}
+
+int main()
+{
+	//1、先创建一个数组
+	int arr[10] = { 4,3,6,9,1,2,10,8,7,5 };
+
+	//数组的长度
+	int len = sizeof(arr) / sizeof(arr[0]);
+	std::cout << "数组的长度为:" << len << std::endl;
+
+	//2、创建一个函数来实现冒泡排序
+	bubbleSort(arr, len);
+
+	//3、打印排序后的数组
+	printArray(arr, len);
+
+
+
+	system("pause");
+
+	return 0;
+}