基于谭浩强老师《C++程序设计(第三版)》做简要Summary。(2019-07-24)

一、数组与指针

1. 指针数组

一个数组,其元素均为指针类型数据,该数组称为指针数组。(type_name * array_name[length])

char *point_array[]={"Basic", "C++", "Pascal"};  //1. 每一个数组内容均为一个char*类型的指针
char* point_array[3]={"Basic", "C++", "Pascal"};
(char*) point_array[3]={"Basic", "C++", "Pascal"};

2. 数组指针

二维数组的指针访问:

二维数组的指针访问:
p + i p[i] *(p + i) 都表示array第 i+1 行的第 1 个元素的首地址
*(p + i) + j p[i] + j &p[i][j] 都表示array第 i+1 行, 第 j+1列元素的地址
((p + i) + j) *(p[i]+j) p[i][j] 都表示array数组第 i+1 行, 第 j+1列元素的值

二、 const 指针使用简介

1. 指向常量的指针变量

经此定义后,不允许通过指针变量改变它指向的对象的值。(const type_name * pointer_name)

int a = 12, b = 15;
const int *p = &a; //Test
*p = 15; // 1. 通过p改变指向的对象a的值,非法。 p = &b; // 2. 将p改为指向b,合法。 a = 15; // 3.直接改变a的值,合法。 //Extension const int a = 10; //1. a的值始终不变。

2. 常指针/常指针变量

经此定义后,指针变量的指向不能改变。(type_name * const pointer_name)  

int a = 4, b = 6;
int * const p2 = &a; //Test
p2 = &b; //1. 不能改变P2指向,非法。 *p2 = 12; //2. 改变a的值,合法。
 

3. 指向常量的常指针

 (1),(2)部分结合,指针变量指向一个固定的对象,该对象的值不能改变(const type_name * const pointer_name) 

int a = 4, b = 6;
const int *const pt = &a; //Test
pt = &b; //1. 不能改变pt指向,非法。 *pt = 12; //2. 通过pt改变a的值,非法。 a = 30;    //3.  直接改变a的值,合法。

【C++/C】指针基本用法简介-A Summary of basic usage of Pointers.的更多相关文章

  1. IOS NSInvocation用法简介

    IOS NSInvocation用法简介 2012-10-25 19:59 来源:博客园 作者:csj007523 字号:T|T [摘要]在 iOS中可以直接调用某个对象的消息方式有两种,其中一种就是 ...

  2. C,C++回文字符串判断(字符串指针的用法)

    功能:输入一个字符串,判断是否为回文. 主要锻炼指针的用法. 1.C版 #include<stdio.h> int main() { ]; char a; ,flag=; while((a ...

  3. JodaTime用法简介

    JodaTime用法简介 Java的Date和Calendar用起来简直就是灾难,跟C#的DateTime差距太明显了,幸好有JodaTime 本文简单罗列JodaTime的用法 package co ...

  4. Apache自带压力测试工具ab用法简介

    ab命令原理 ab命令会创建很多的并发访问线程,模拟多个访问者同时对某一URL进行访问.它的测试目标是基于URL的,因此,既可以用来测试Apache的负载压力,也可以测试nginx.lighthttp ...

  5. Postman用法简介

    转自:http://blog.csdn.net/flowerspring/article/details/52774399 Postman用法简介 转载 2016年10月10日 09:04:10 10 ...

  6. C++第二课:指针常用法[个人见解]

    在小编这里,没有任何学习知识的顺序,写到的东西对初学者肯定是有用处的,前提,你真的把C语言学完的那些初学者. 在讲明指针的知识前,或许有人一直说不会指针你学不会C++,或者说你所学C++的深度,全凭你 ...

  7. MSSQL Sql加密函数 hashbytes 用法简介

    转自:http://www.maomao365.com/?p=4732 一.mssql sql hashbytes 函数简介 hashbytes函数功能为:返回一个字符,通过 MD2.MD4.MD5. ...

  8. java assert的用法简介【转】

    assert的基本用法 assertion(断言)在软件开发中是一种常用的调试方式,很多开发语言中都支持这种机制,如C,C++和Eiffel等,但是支持的形式不尽相同,有的是通过语言本身.有的是通过库 ...

  9. glVertexAttribPointer 用法简介

    在内存中采用交叉模式存储,向gpu传入顶点数据的方法  GPU: #version 100 attribute highp vec2 aPosition; attribute highp vec2 a ...

随机推荐

  1. Windows上使用Linux命令

    WSL Windows Subsystem for Linux(简称WSL)是一个在Windows 10上能够运行原生Linux二进制可执行文件(ELF格式)的兼容层.它是由微软与Canonical公 ...

  2. Javascript的数据类型(原始类型和引用类型)

    1.ECMAScript3中定义了变量可分为原始值和引用值. 原始值:是保存在栈(stack)中的简单数据段:也就是说他们的值是直接存储在变量访问的位置. 引用值:是保存在堆(heap)中的对象,也就 ...

  3. Android Studio 之 ViewModel

    ViewModel 是 JetPack 类库中的一个功能,可以保存控件的状态 ,在整个Activity 生命周期中,状态不会失效 如屏幕翻转时,状态可保留,不会失效! 与 LiveData 配合使用! ...

  4. ios手机竖屏拍照图片旋转90°问题解决方法

    手机拍照会给图片添加一个Orientaion信息(即拍照方向),如下: 用ios手机拍照,系统会给图片加上一个方向的属性, ios相机默认的拍照方向是后摄Home键在右为正,前摄Home键在左为正. ...

  5. /etc/resolv.conf文件中的search项作用

    resolv.conf文件中有search项时,主机名解析规则顺序: DNS配置文件如下: # vi /etc/resolv.conf # Generated by NetworkManager se ...

  6. jenkins安装启动(docker)

    mkdir /opt/jenkins -pvim /opt/jenkins/Dockerfile FROM jenkins/jenkins:lts EXPOSE 8080 50000 vim /opt ...

  7. Css3 文字渐变整理(一)

    一.文本颜色渐变 <gradient> :可以应用在所有接受图像的属性上,允许使用简单的语法实现颜色渐变,以便UA在渲染页面自动生成图像. 语法:<gradient> = li ...

  8. centos如何添加ftp目录

    检查Centos服务器中是否安装了vsftpd rpm -qa |grep vsftpd 如果没有显示则没有安装 2.安装vsftpd yum -y install vsftpd 3.打开vsftpd ...

  9. 如何查看android studio sdk路径配置

    file–>Other Settings–>Default Project Structure

  10. vi编辑器操作 快捷键

    vi编辑器操作 快捷键 1. 命令模式 与 编辑模式切换 a:光标向后移动一位进入编辑模式 i:光标和内容 没有变化进入编辑模式 o:新起一行进入编辑模式 s:删除光标所在字符进入编辑模式       ...