Fork me on GitHub

【C++/C】指针基本用法简介-A Summary of basic usage of Pointers.

基于谭浩强老师《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的值,合法。
posted @ 2019-07-25 16:16  slrn  阅读(145)  评论(0编辑  收藏  举报