C++指针——(2)指针的进阶知识
来源:互联网 发布:python os 编辑:程序博客网 时间:2024/06/05 03:20
1.typedef定义同义类型
利用typedef关键字定义同义类型
语法如下:
typedef existingType newType;
例如:
typedef int integer;integer value = 40;
等价于
int value = 40;
同样的,对于指针变量来讲,我们有
typedef int* intPoint;intPoint p1,p2;//可以避免int* 同时定义两个变量出现的问题
2.数据常量和指针常量
double radius = 5;double* const p = &radius;//指针常量
指针常量指的是指针定义赋值后不能再赋予新的地址。
但指针指向的数据值可以改变。
例如:
*p =10;//正确p=&newRadius;//错误
[说明]
const double* const pValue = &radius;
其中第一个const是常量数据,第二个是常量指针。
给出更多的代码例子
double radius = 5;double*const p = &radius;double newRadius = 6;*p = 7;// correctp = &newRadius; //wrongconst double* p1= &radius;*p=7;//wrongp1 = &newRadius;//correctconst double* const p2 =&radius;*p2 = 7;//wrongp2 = &newRadius;//wrong
3.数组和指针的关系
一个数组变量实质是一个指针。我们假设已经声明了一个数组
int list[6] = {11,12,13,14,15,16};
下面的语句可以用来打印数组的首地址:
cout << "The starting address of the array is " << list << endl;
[备注]:地址值的增加减少与sizeof(type)有关
给出一个指针访问数组元素的例子
#include<iostream>using namespace std;int main(){ int list[6] = {11,12,13,14,15,16}; for(int i = 0; i < 6; i++) cout << "address: " << (list + i) << " value: " <<*(list + i) << " "<< " value: " <<list[i] <<endl; return 0;}
给出很多的例子
#include<iostream>using namespace std;int main(){ int list[6] = { 11,12,13,14,15,16 }; int* p = list; for (int i = 0; i < 6; i++) cout << "address: " << (list + i) << " value: "<< *(list + i) << " " << " value: "<< list[i] << " " << " value: "<<*(p + i )<< " " << " value: " << p[i] << endl; return 0;}
运行结果
[说明]
1)以下两组代码等价
int* p = list;
int* p = &list[0];
2)数组与指针在访问元素时等价,而数组声明后无法改变地址
int list1[10],list2[10];list1 = list2;//wrong
从这个意义上来讲,在C++中数组名实质上是一个常量指针
3)C字符串也可以通过指针来访问
char city[8] = "NanJing";
等价于
char* pCity = "NanJing";
每个声明都是创建了
也可以利用数组和指针语法来访问city或者pCity
cout << city[1] <<endl;cout << *(city + 1) <<endl;cout << pCity[1] <<endl;cout << *(pCity + 1) <<endl;
0 0
- C++指针——(2)指针的进阶知识
- C/C++ 进阶 —— 指向指针的指针
- C语言——数组与指针进阶(一)
- C语言——数组与指针进阶(二)
- C 指针的 基础 知识
- C/C++一些知识2(指针)
- C语言深度剖析之—指针与内存地址(函数指针,普通指针,指针数组,数组的指针,指针的指针)
- C语言深度剖析之—指针与内存地址(函数指针,普通指针,指针数组,数组的指针,指针的指针)
- C语言深度剖析之—指针与内存地址(函数指针,普通指针,指针数组,数组的指针,指针的指针)
- 彻底搞定C指针——指向指针的指针
- 彻底搞定C指针——指针的指针
- 再谈C语言指针—指向另一指针的指针
- 再谈C语言指针—指向另一指针的指针
- C语言的指针(进阶篇章之一)
- C语言的指针(进阶篇章之二)
- iOS——指针进阶
- C进阶指南(2):数组和指针、打桩
- C进阶指南(2):数组和指针、打桩
- VS2010开发的WPF程序在XP系统上的运行环境和lognet4在WPF中的配置使用
- sdnu 1009
- 多媒体篡改检测资源
- 洛谷P1865 A%B Problem
- js原型与原型链
- C++指针——(2)指针的进阶知识
- dispatch source理解
- 【python练习】--《learn python the hard way》ex39
- mysqli
- 迷宫问题(八方向)
- hibernate进阶之一对多和inverse属性
- 计算机概论的基础知识
- 【CQOI2013】bzoj3105 新Nim游戏
- 1小时学会:最简单的iOS直播推流(二)代码架构概述