加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

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 中。在这种情况下,* 是一个解引用操作符,用来从指针指向的地址中取出数据。

总结
在定义中,* 用于指出一个变量是指针,即存储了一个内存地址。
在使用中,* 用于通过指针访问其指向的内存位置的实际数据。
这两种用途虽然相关,但上下文完全不同。在定义指针时,* 是声明的一部分,表明变量类型为指针。而在使用指针时,* 是一个操作符,用于从指针指向的位置获取或修改数据。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有