当前位置: 首页 > news >正文

电脑网站制作seo专业培训中心

电脑网站制作,seo专业培训中心,平潭综合实验区建设工程网站,wordpress图片展示主题文章目录 一、二级指针可实现的效果二、指针的引用1、指针的引用 等同于 二级指针 ( 重点概念 )2、引用本质 - 函数间接赋值简化版本3、代码示例 - 指针的引用 一、二级指针可实现的效果 指针的引用 效果 等同于 二级指针 , 因此这里先介绍 二级指针 ; 使用 二级指针 作为参数 …

文章目录

  • 一、二级指针可实现的效果
  • 二、指针的引用
    • 1、指针的引用 等同于 二级指针 ( 重点概念 )
    • 2、引用本质 - 函数间接赋值简化版本
    • 3、代码示例 - 指针的引用





一、二级指针可实现的效果



指针的引用 效果 等同于 二级指针 , 因此这里先介绍 二级指针 ;


使用 二级指针 作为参数 , 可以实现如下功能 :

  • 动态内存管理 : 借助二级指针 , 可以在函数中分配或释放内存 ; 如 : 创建一个动态数组或调整现有数组的大小 , 在函数中需要一个指向指针的指针作为参数 , 以便修改原始指针 ;
void createArray(int **arr, int size) {  *arr = malloc(size * sizeof(int));  
}
  • 修改指针的值 : 借助二级指针 , 可以在函数中修改指针的值 , 即改变它所指向的地址 ; 如果直接传递 一级指针 , 函数只能修改指针指向内存中的数据 , 指针的指向不会改变 ;
void changePointer(int **ptr) {  int new_value = 10;  *ptr = &new_value;  // 修改指针值 
}
  • 传递多维数组 : C 语言中 , 数组名本质上是指向数组第一个元素的指针 , 传递多维数组到函数中通常需要传递一个指向指针的指针 , 即二级指针 ; 借助二级指针 , 函数可以修改原始数组的行指针 ;
void process2DArray(int **array, int rows, int cols) {  //...  
}




二、指针的引用




1、指针的引用 等同于 二级指针 ( 重点概念 )


普通变量的 引用 , 调用时可以直接当做 普通变量 使用 , 可实现的功能 相当于 一级指针 ;

  • 普通变量 相当于 零级指针 ;

一级指针的 引用 , 调用时可以直接当做 一级指针 使用 , 可实现的功能 相当于 二级指针 ;

N 级指针的 引用 , 调用时可以直接当做 N 级指针 使用 , 可实现的功能 相当于 N + 1 级指针 ;


在 C++ 语言 中 , 使用 引用 时 , C++ 编译器 会自动将 引用 翻译为 一级指针 使用 , 自动 在 一级指针 变量 旁边加上 取地址符号 & 和 取值符号 * ;

指针的引用 就相当于 二级指针 , 其 实现的效果 , 等同于 二级指针 ;

C++ 编译器 遇到 指针的引用 时 , 会自动将 引用指针 转为 二级指针 ;



2、引用本质 - 函数间接赋值简化版本


使用函数进行间接赋值 , 需要满足如下三个条件 :

  • 函数中定义 指针类型 的 形参 , 调用函数时 修改函数外的 实参 ;
  • 将 实参 取地址 , 传递给 函数 ;
  • 在函数中 , 通过指针修改 实参的值 , 以达到修改外部变量的效果 ;

如果将 函数 的形参类型 设置为 引用 类型 , 也能达到 间接赋值 的效果 ;

引用 实际上是 把 间接赋值 的三个条件的后两个条件进行了合并 , C++ 编译器遇到引用 , 还是需要将 引用 还原为 C 语言中的 取地址 传入函数 , 在函数内部使用指针访问实参 ;


3、代码示例 - 指针的引用


该 函数 的 参数 是 一级指针的引用 , 使用该参数时 可以当做 一级指针使用 , 其效果 等同于 二级指针 ; 其效果等同于上一篇博客 【C++】C++ 引用详解 ⑥ ( 普通变量 / 一级指针 / 二级指针 做函数参数的作用 ) 中的 int getStudent(Student** stu) 函数 ;

// 参数是 一级指针的引用 
// 该参数 是 一级指针的引用 
// 使用该参数时 可以当做 一级指针使用
// 其效果 等同于 二级指针
int getStudent(Student*& p)

调用该 一级指针 的 引用 , 可以直接访问 一级指针 , 不需要使用 * 符号 ;

因此 这里 直接为 一级指针 进行内存分配 ;

如果此处是二级指针 , 需要先试用 * 符号 取出二级指针指向的一级指针 , 然后再为该 一级指针 分配内存 ;

    // 为形参中声明的 Student* 指针的引用 分配内存// 一维指针的引用 相当于直接访问一维指针 // 相当于为 main 函数中的 Student* stu 变量赋值p = (Student*)malloc(sizeof(Student));// 如果传入的是二维指针参数 Student** p// 上述操作等同于// *p = (Student*)malloc(sizeof(Student));

代码示例 :

// 导入标准 io 流头文件 其中定义了 std 命名空间
#include <iostream>
// 导入 std 命名空间
using namespace std;struct Student
{char name[64];int age;
};// 参数是 指针的引用 
// 该参数 是 一级指针的引用 
// 使用该参数时 可以当做 一级指针使用
// 其效果 等同于 二级指针
int getStudent(Student*& p)
{// 为形参中声明的 Student* 指针的引用 分配内存// 一维指针的引用 相当于直接访问一维指针 // 相当于为 main 函数中的 Student* stu 变量赋值p = (Student*)malloc(sizeof(Student));// 如果传入的是二维指针参数 Student** p// 上述操作等同于// *p = (Student*)malloc(sizeof(Student));if (p == NULL){// 分配内存失败 , 返回错误码 2return 2;}// 设置结构体成员值p->age = 18;// 执行成功return 0;
}int main() {// 声明 Student 对象Student* stu = NULL;// 调用函数 将二级指针传入函数 // 在函数内部创建 Student 对象getStudent(stu);// 打印结构体成员printf("stu->age = %d\n", stu->age);// 控制台暂停system("pause");return 0;
}

执行结果 :

stu->age = 18
请按任意键继续. . .

在这里插入图片描述

http://www.yayakq.cn/news/888092/

相关文章:

  • 重庆网站建设wordpress 分页导航
  • 网站建设亻金手指下拉萧涵wordpress主题
  • 鞍山做网站比较好的公司杭州网站建设找思创
  • 如何做国外的社交网站定远网站开发
  • 可信网站验证服务中心窗帘网站建设策划书
  • 建晨网站建设东莞seo优化推广
  • 个人网站怎么设计cms网站后台模版
  • 做设计的网站org的域名网站
  • 建设银行短信带网站上海人力资源网官方网
  • 如何在国税网站做票种核定软文写作平台发稿
  • 中国建造师官方网站seo推广一个月见效
  • 视频素材网站推荐看男科比较正规的医院
  • 许昌做网站便宜网站建设哪家好
  • 郑州网站建设家具网站素材
  • 做任务刷王者皮肤网站怎样做个做外贸的网站
  • 手机管理wordpress青岛网站优化多少钱
  • 网站建设案例收费情况c可以做网站吗
  • 金融网站制作上海建筑公司名称大全
  • 反腐网站建设的目的温州网络推广公司哪个好
  • 做网站和做阿里巴巴管理咨询是做什么的
  • 十大网站app软件iis 网站 端口
  • 沈阳做企业网站win2012服务器网站建设
  • 网站推广怎么做优化西安网站开发公司地址
  • 有趣的网站小游戏wordpress 文章的各种调用
  • 自媒体时代做网站有前途吗给wordpress首页添加一个公告
  • 哪里有做彩票网站了网站制作有限公司
  • 一流的内蒙古网站建设wordpress 324
  • 寺庙网站开发鹤壁网站建设
  • 网站logo一般多大wordpress手机管理软件
  • 网站建设免费按词收费博达网站建设流程