c++指针、数组、函数三者一体
(2024-09-26 17:18:59)分类: 接口类的哈 |
打卡 63 指针 数组 函数 三者一体:
https://www.bilibili.com/video/BV1et411b73Z?p=63&spm_id_from=pageDriver&vd_source=2a756a841699e678985ce674ad996db8
聪明来一波吧
—————————————————————————————————————————————
#include
using namespace std;
//指针 数组 升序冒泡
void bubbleSort(int * arr, int len )
{
for (int i=0;i
for (int j = 0; j < len
- i - 1; j++)
{
if (arr[j] > arr[j +
1])
{
int temp =
arr[j];
arr[j] = arr[j +
1];
arr[j + 1] =
temp;
}
}
}
void printArry(int* arr, int len)
{
for (int i = 0; i< len ;
i++)
{
cout << arr[i]
<<endl;
}
}
int main(){
//创建数组
//指针
数组进行冒泡排序
// 打印出来
int arr[10] =
{4,3,6,9,1,2,10,8,7,5};
int len = sizeof(arr) /
sizeof(arr[0]);
bubbleSort(arr,
len);
printArry(
arr, len);
system("pause");
cout<< arr <<
"pause" << endl;
return 0;
}
————————————————————————————————
————————————————————————————————
#include
using namespace std;
// 值传递 不改变实参
// 地址传递 可以改变 实参
void swap01(int a , int b)
{
int temp = a;
a = b;
b = temp;
cout << "swap01"
<< b << endl;
cout << "swap01"
<< b << endl;
}
void swap02(int *p1, int * p2)
{
cout <<
"swap02函数内部-------------" <<
endl;
int temp = *p1;//*
内存解引用,传的是地址的内容*
*p1 = *p2;
*p2 = temp;
cout << "swap02*p1 "
<< *p1 << endl;
cout << "swap02*p2"
<< *p2 << endl;
cout <<
"swap02 p1 " << p1 <<
endl;
cout <<
"swap02 p2" << p2
<< endl;
cout << "swap02
------------& p1 " << &p1 << endl;
cout <<
"swap02------------- & p2 " << &p2 <<
endl;
cout <<
"swap02函数内部结束-------------" << "/n" <<
endl;
cout <<
"-------------------------------" << "/n" <<
endl;
}
int main(){
//创建数组
// 指针
数组进行冒泡排序
// 打印出来
int a = 10;
int b = 20;
//swap01(a,
b);
//cout << "ais"
<< b << endl;
//cout << "bis"
<< b << endl;
swap02(&a,
&b);
cout << "a is "
<< a << endl;
cout << "b is "
<< b << endl;
cout << "swap02
&a" << &a << endl;
system("pause");
return 0;
}
结果:————————————————————————————————
swap02函数内部-------------
swap02*p1 20
swap02*p210
swap02 p1 0000009B60CFF534
swap02 p20000009B60CFF554
swap02 ------------& p1 0000009B60CFF510
swap02------------- & p2 0000009B60CFF518
swap02函数内部结束-------------/n
-------------------------------/n
a is 20
b is 10
swap02 &a0000009B60CFF534
请按任意键继续. . .
————————————————————————————————————
聪明来一波吧
上文 函数定义的 int
*p1 和函数体 int
temp = *p1; 两个地方的 p1 *
起的作用不同?
在函数定义和函数体内,*
操作符确实承担了不同的角色,但都与指针相关。这里是如何区分和理解这两个不同用法的详细解释:
函数定义中的 int *p1
在这里的 int *p1 中,* 用来声明 p1 为一个指向
int 类型数据的指针。这表示 p1 是一个变量,其值是一个地址,这个地址指向一个 int 类型的数据。在这种情况下,*
是指针声明的一部分,用于定义指针类型。
函数体中的 *p1
在函数体中的表达式 int temp = *p1; 里,*
用于解引用指针 p1。解引用指针意味着访问指针 p1 指向的内存地址处存储的数据。在这个例子中,*p1 访问了 p1 指向的 int
值,并将其复制到了新的变量 temp 中。在这种情况下,* 是一个解引用操作符,用来从指针指向的地址中取出数据。
总结
在定义中,*
用于指出一个变量是指针,即存储了一个内存地址。
在使用中,*
用于通过指针访问其指向的内存位置的实际数据。
这两种用途虽然相关,但上下文完全不同。在定义指针时,*
是声明的一部分,表明变量类型为指针。而在使用指针时,* 是一个操作符,用于从指针指向的位置获取或修改数据。
前一篇:win10装机清单呐