IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> c++-基础部分-指针-小总结 -> 正文阅读

[C++知识库]c++-基础部分-指针-小总结

清华大学出版社《c++程序设计》(第三版)中简单总结的一些知识点

  • int *p 指向int类型的指针;指针变量存放着另一变量的地址,它本身也是一个变量,也有地址;*xptr,直接就代表了它所指向的x变量,不必纠结;
  • 引用也是一种类型,int x;int &y=x;y就成了x的一个别名,对y操作就是对x的操作,和指针不同的是,一旦被初始化,就不能改变引用关系了
  • 指针算数运算,p++,p+n位移;指针关系运算:前后p1<p2,是否空指针p1==0;指针赋值(地址常量或者变量)(数组名即数组第一个元素的地址)
int a[10],*aptr;
aptr = a;	
aptr = &a[0];	
a[5] = *(aptr+5) = *(a+5) = apter[5];
  • 指针数组:例如按二维数组来储存字符串,按最长的来定义,造成空间浪费,如果采用指针,则可以存放任意长度的字符串;char *week[7]={“sunday”,“monday”……}
  • 字符指针,将字符串指针指向字符串的首地址;用char类型定义字符串,除了字符数组,就是用字符指针不能直接定义char s=“fdsafd”,定义字符串指针后,对s的操作就是对字符串的操作
char *s="asfdqghv";
char *s;
s="asfdqghv";
//最好加const
  • const限定符 (这里常量指的是不能变的,非常量指的是可以变的,主要看const摆哪)
    • 指向非常量的非常量指针(那都不加const)
    • 指向常量数据的非常量指针
      • int i;const int p;p=&i;)p指向的整数不能通过p来修改,即通过p,但修改p是允许的,他可以指向别的如p=&j,也可以直接修改常整数j=10;
      • const int val=10;const int *p;p=&val;)这时通过p和通过val都不能修改val的值;
    • 指向非常量数据的常量指针
      • (int var;int *const p=&var;) p指向的整数可以通过p来修改,但是p本身的值初始化后不能修改了,永远只能指向var
      • 由于声明了是指向int变量,所以也不能指向const修饰的整形变量如(const int var)
    • 指向常量数据的常量指针
      • (const int val=10;const int *const p=&val;)
    • 用于传递函数参数
      • 函数参数是指针,合理使用const限定符,保证实参安全,又能避免普通传值带来的空间开销,例:void output(const double pd) {}(不能通过p修改参数)
      • const修饰引用参数,例:void output(const double &d){}(d不能被修改)
  • 指针和引用 见,p170例7-9,通过指针和传引用的用法上有区别,要理解其中的意思
    指针:定义函数时void swap(int *x,int *y),调用函数时swap(&x,&y)
    引用:定义函数时void swap(int &x,int &y),调用函数时swap(x,y)
    (我看到过这样一个描述,引用底层是一个自动解引用的const指针)
    但指针过于自由,可以随便指,但传引用依附于固定对象,所以不容易出错,更易读。
  • 动态内存分配(静态内存就是普通变量声明的内存,动态内存通过指针分配所需的内存呢,按需分配,及时释放)
    c上遗留下来的方法malloc、free,如例7;
    new delete 方法
  • 函数指针(int (*fb)(char));(要加括号否则变成对指针函数的声明,int *fb(char),表示返回指向int的指针)p177,例7-12
    • 函数名就想数组名一样,代表指向储存函数空间的首地址 例如:int (*p) (int,int); int a(int,int); p=a,则p就指向了函数p,注意p和a的返回类型和参数类型都是一样的。可以int i=(*p)(1,2),即p的调用代替a的调用;int i=p(1,2) 也能工作
    • 当某个函数的参数是函数指针 void a(int (*b)(int));某个函数int c(int) 正好a的参数类型匹配,则使用时这么用: a( c )就行了。

封面

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-10-09 16:05:38  更:2021-10-09 16:06:53 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/20 0:31:58-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码