通过代码+注释来说明问题

#include <stdio.h>struct box
{int a;int c;box(int i,int j){a=i;c=j;}
};void func1();
void func2(int *a,int *b);
void func3(int *p);
void func4(int &c);
void func5(int *&p);void main()
{func1();int a=111;int b=1234;func2(&a,&b);// & 此时为取地址printf("%d %d\n",a,b);int *p=NULL;func3(p);printf("%p\n",p);int c=1111;func4(c);printf("%d\n",c);int *q=NULL;func5(q);printf("%p\n",q);}void func1()
{int num=100;int block=1000;box bBOX(3,3);// 指针是一个变量,指针变量p中存储的是(指向num代表的内存单元的)地址int *p=#// 引用和原来的变量num是一个东西,r和num都指的是num所代表的存储单元int &r1=num;box &r2=bBOX;// 指针可以不用初始化,但引用必须初始化int *ptrA;// 指针可以为NULL,但是引用不可以为空int *ptrB=NULL;// 有const指针,但没有const引用// 指针可以有多级指针,但是引用只能有一级int   *p1 = #int  **p2 = &p1;int ***p3 = &p2;// 指针的值可以改变,但是引用是不可以改变的p=█// sizeof(指针)得到的是指针的大小,sizeof(引用)得到的是所指变量(对象)的大小printf("%d %d %d \n",sizeof(p),sizeof(r1),sizeof(r2));// 指针和引用的自增(++)意义不同,引用根本不能进行自加操作p1++;p2++;p3++;// & 一定要将 引用 和 取地址 区分开//
}// 参数指针型形参变量,但这是一种拷贝,注意函数体内
// 修改的是指针所指的空间,不是指针本身的空间,
// 所以不要认为这不是一种拷贝
void func2(int *a,int *b)
{int c;c = *a;*a = *b;*b =  c;
}// 参数指针型形参变量,但这是一种拷贝
void func3(int *p)
{int a=100;p=&a;
}// // 参数引用型(普通类型)形参变量
void func4(int &c)
{int a=100;c=a;
}// 参数引用型(指针)形参变量,传递的是指针的本身,不是临时拷贝
void func5(int *&p)// 得到(取指针p的地址的)变量,操作的是存储指针变量的空间
{   int a=100;p=&a;
}

C/C++指针 引用相关推荐

  1. 2020-09-25C++学习笔记引用2:二级指针形参与指针形参的使用方法和区别重难点,主看综合代码(1、指针形参2、引用形参3、二级指针形参4、指针引用形参)

    2020-09-25C++学习笔记引用2:二级指针形参与指针引用搭配做形参的使用方法区别重难点,注意事项主看综合代码(1.指针形参2.引用形参3.二级指针形参4.指针引用形参) 1.指针引用 #inc ...

  2. C++中指针*与指针引用*的区别说明

    C++中*&(指针引用)与*(指针)的区别 *指针是一个存放地址的变量,指针引用指的是这个存放地址的变量的引用. C++中如果参数不是引用的话,会调用参数对象的拷贝构造函数, 所以如果有需求想 ...

  3. c一:指针引用(int * p )和指针(int * q)的区别

    #include <iostream>using namespace std;int g = 300;void print(int p, int q) {cout << p & ...

  4. c语言实参形参函数调用指针引用 符号实例,C语言实参、形参、函数调用、指针、引用、符号实例.doc...

    C语言实参.形参.函数调用.指针.引用.符号实例 C语言实参.形参.函数调用.指针.引用.*&符号实例 实现环境:VC6 程序源代码: #include "stdio.h" ...

  5. 二叉查找树-优化版,使用了指针引用

    1 //与上一次实现不同,这里使用了大量的指针引用, 2 //因此节省了一个指向父节点的指针 3 #include<iostream> 4 #include<vector> 5 ...

  6. C++中 *(指针引用)与*(指针)的区别

    转自:http://blog.sina.com.cn/s/blog_673ef8130100imsp.html 指针传递参数本质上是值传递的方式,它所传递的是一个地址值.值传递过程中,被调函数的形式参 ...

  7. c语言中通过指针引用数组,C语言基础(二)

    指针引用数组 C语言规定:如果指针变量p已指向数组中的一个元素,则p+1指向同一数组中的下一个元素. 引入指针变量后,就可以用两种方法来访问数组元素了.如果p的初值为&a[0],则: p+i和 ...

  8. 浅谈Object Pascal的指针[引用 Nicrosoft]

    浅谈Object Pascal的指针 Nicrosoft(nicrosoft@sunistudio.com) -- 2001.8.26     http://www.sunistudio.com/ni ...

  9. 面试准备每日五题:C++(六)——CC++、staticconstextern、sizeof strlen、指针引用、数组指针指针数组函数指针

    文章目录 一.C和C++的区别是什么? 二.关键字static.const.extern作用 三.sizeof和strlen的区别 四.指针和引用的区别 五 .指针数组.数组指针.函数指针 一.C和C ...

  10. 编程题:字符串的指针引用。用指针法实现。功能:将字符串str2复制连接到str1...

    编程题:字符串的指针引用.用指针法实现.功能:将字符串str2复制连接到str1 #include<stdio.h> void main() { char *s1,*s2, str1[30 ...

最新文章

  1. oracle修改时区无效,Oracle 时区问题
  2. 以太坊今日大涨7.5%,芝商所备战“以太坊期货”
  3. @这位没带口罩的朋友,你让我感染新冠的风险升高百倍!马普所建模计算结果,认真的...
  4. WHERE WILL BUSINESS PHD GO?
  5. Android 高级Drawable资源---复合Drawable----层Drawable
  6. 解决postman请求乱码问题
  7. mysql 8.0远程连接_安装mysql 8.0.17并配置远程访问的方法
  8. android其架构图,Android系统架构图,带你直观了解Android基本架构
  9. exif php 库,Linux 下安装配置 EXIF 库
  10. Kafka系列9:面试题是否有必要深入了解其背后的原理?我觉得应该刨根究底(上)
  11. c语言数组判断不及格人数,C语言编程 运用数组求不及格人数
  12. 电脑鼠标右键失效linux,鼠标右键失灵,教你win7电脑鼠标右键失灵的应对办法
  13. 使用百度地图AndroidSDK
  14. Nginx自建CDN加速节点 实现DNS智能解析网站项目
  15. 【Python】输出字母在字符串中位置索引 (20 分)
  16. 鼠标使用板载内存和使用计算机上,【罗技G700s无线鼠标使用总结】功能|配置|模式|灵敏度_摘要频道_什么值得买...
  17. CASdatasets
  18. 新浪微博开发之授权用户登录的实现
  19. 软件测试(十五)—— Web专项测试
  20. 我跟Android TV有场约战~战书

热门文章

  1. java单链表基本操作 一,Java_实现单链表-基本操作
  2. 安卓linux终端 计算,5种在Linux终端中进行算术运算的方法
  3. vue 子页面调用父页面的参数_Flutter子组件调用父组件方法修改父组件参数
  4. mysql中关于group的语句指令_mysql不支持group by的解决方法小结
  5. 矩形面积交(蓝桥杯)
  6. python基础——python容器的有序性和可变性总结
  7. 比赛中学习(2)-voc数据集制作中将.txt文件变为.xml文件
  8. http接口返回对象的方法
  9. [codevs1378]选课
  10. 视图之一--创建简单的视图