C++基础学习笔记---指针
2017-02-27 10:51
211 查看
指针:
1.内存空间的访问方式:1.通过变量名。2.通过地址。
静态生存期:与程序的运行期相同,具有静态生存期的变量在程序开始运行之前就被分配了内存空间;
动态生存期:诞生于声明点,结束于该标识符作用域结束处。遇到变量声明语句时被分配内存空间的。
---C++中有专门用来存放单元地址的变量类型,指针类型。
2.指针变量的声明: 数据类型 *标识符
数据类型可以是任意类型,指的是指针所指向的对象(包括变量和类的对象)的类型。
------指针声明后必须先赋值,再引用。
3.与地址相关的运算—— * 和 &
* :(取内容)指针运算符,表示获取指针所指向的变量的值。
& :(取地址)取地址运算符,表示用来得到一个对象的地址。
void类型指针,可以储存任何类型的对象地址。
4.指针运算:
赋值给指针变量的值必须是地址常量(数组名)或地址变量,不能使非0的整数。
----用指针处理数组元素:指针加减运算的特点特别适合于处理储存在一段连续内存空间中的同类数据。
数组是具有一定顺序关系的若干同类型变量的集合体。
5.指针数组:一个数组的每一个元素都是指针变量。
6.用指针作为函数参数:
可以实现参数双向传递的作用(跟引用调用差不多),可以减少函数调用时数据传递的开销。
在程序设计是,当某个函数中以指针或引用作为形参都可以达到同样的目的时,使用引用会使程序的可读性更好一些。
//用指针作函数的形式参数:
splitfloat(float x,int *intpart,float *fracpart)
{ *intpart=int(x);
*fracpart=x-int(x);
} splitfloat(x,&n,&f);
OR: //引用形式:引用的符号&区别于取地址符号。引用时一种特殊类型的变量,可以被认为是另一个变量的别名。
splitfloat(float x,int &intpart,float &fracpart)
{ intpart=int(x);
fracpart=x-int(x);
}
splitfloat(x,n,f);
7.指针型函数:返回值是指针类型时,这个函数就是指针型函数。
定义:
数据类型 *函数名(参数表)
{
函数体;
}
8.指向函数的指针:
程序运行时,不仅数据要占据内存空间。执行程序的代码也被调入内存并占据一定的空间。每一个函数的函数名就是函数代码在内存中的起始地址。
函数指针就是用来存放函数代码首地址的变量。在程序中可以像使用函数名一样使用指向函数的指针来调用函数。
声明: 数据类型 (*函数指针名)(形参表)
函数指针名=函数名
eg: void (*function_pointer) (float); //void类型的函数指针
function_pointer = print_message;//函数指针指向print_m.
9.对象指针:
对象所占据的内存空间只是用于存放数据成员的,函数成员不在每一个对象中存储副本。对象指针就是用于存放对象地址的变量。
声明: 类名 *对象指针名
Point *p_Point
Point p1;
p_Point = &p1;
通过对象指针访问对象成员: 对象指针->成员名
---this指针:是一个隐含于每一个类的成员函数中的特殊指针(包括构造函数和析构函数),它用于指向正在被成员函数操作的对象。
X=xx; // this->X=xx;
Y=yy; // this->Y=yy;
splitfloat(x,&n,&f);
1.内存空间的访问方式:1.通过变量名。2.通过地址。
静态生存期:与程序的运行期相同,具有静态生存期的变量在程序开始运行之前就被分配了内存空间;
动态生存期:诞生于声明点,结束于该标识符作用域结束处。遇到变量声明语句时被分配内存空间的。
---C++中有专门用来存放单元地址的变量类型,指针类型。
2.指针变量的声明: 数据类型 *标识符
数据类型可以是任意类型,指的是指针所指向的对象(包括变量和类的对象)的类型。
------指针声明后必须先赋值,再引用。
3.与地址相关的运算—— * 和 &
* :(取内容)指针运算符,表示获取指针所指向的变量的值。
& :(取地址)取地址运算符,表示用来得到一个对象的地址。
void类型指针,可以储存任何类型的对象地址。
4.指针运算:
赋值给指针变量的值必须是地址常量(数组名)或地址变量,不能使非0的整数。
----用指针处理数组元素:指针加减运算的特点特别适合于处理储存在一段连续内存空间中的同类数据。
数组是具有一定顺序关系的若干同类型变量的集合体。
5.指针数组:一个数组的每一个元素都是指针变量。
6.用指针作为函数参数:
可以实现参数双向传递的作用(跟引用调用差不多),可以减少函数调用时数据传递的开销。
在程序设计是,当某个函数中以指针或引用作为形参都可以达到同样的目的时,使用引用会使程序的可读性更好一些。
//用指针作函数的形式参数:
splitfloat(float x,int *intpart,float *fracpart)
{ *intpart=int(x);
*fracpart=x-int(x);
} splitfloat(x,&n,&f);
OR: //引用形式:引用的符号&区别于取地址符号。引用时一种特殊类型的变量,可以被认为是另一个变量的别名。
splitfloat(float x,int &intpart,float &fracpart)
{ intpart=int(x);
fracpart=x-int(x);
}
splitfloat(x,n,f);
7.指针型函数:返回值是指针类型时,这个函数就是指针型函数。
定义:
数据类型 *函数名(参数表)
{
函数体;
}
8.指向函数的指针:
程序运行时,不仅数据要占据内存空间。执行程序的代码也被调入内存并占据一定的空间。每一个函数的函数名就是函数代码在内存中的起始地址。
函数指针就是用来存放函数代码首地址的变量。在程序中可以像使用函数名一样使用指向函数的指针来调用函数。
声明: 数据类型 (*函数指针名)(形参表)
函数指针名=函数名
eg: void (*function_pointer) (float); //void类型的函数指针
function_pointer = print_message;//函数指针指向print_m.
9.对象指针:
对象所占据的内存空间只是用于存放数据成员的,函数成员不在每一个对象中存储副本。对象指针就是用于存放对象地址的变量。
声明: 类名 *对象指针名
Point *p_Point
Point p1;
p_Point = &p1;
通过对象指针访问对象成员: 对象指针->成员名
---this指针:是一个隐含于每一个类的成员函数中的特殊指针(包括构造函数和析构函数),它用于指向正在被成员函数操作的对象。
X=xx; // this->X=xx;
Y=yy; // this->Y=yy;
splitfloat(x,&n,&f);
相关文章推荐
- C++学习笔记:函数指针语法基础以及函数指针做函数参数的思想剖析
- C++基础学习笔记:指针
- [学习笔记]C和C++中指针的基础知识点(二)
- (c/c++学习笔记四)指针基础
- C++基础教程 学习笔记(二) 数组、字符串和指针
- [学习笔记]C和C++中指针的基础知识点(一)
- (C/C++ 学习笔记)函数指针语法基础
- C/C++ 基础知识学习笔记 (不断更新中)
- c++指针学习笔记--交换两个字符串数据收藏
- C++学习笔记(3)——成员变量、成员函数的指针
- 《面向对象基础:C++实现》学习笔记之七
- 智能指针auto_prt的使用(c++学习笔记)
- 《面向对象基础:C++实现》学习笔记之八
- C++学习笔记(一)--基础知识sizeof用法
- C++/GDI+ 学习笔记(三)——基础
- C++学习笔记-指针和引用的注意事项
- C++学习笔记---关于指针
- C++学习笔记二 —— 3.3 指针类型
- C/C++学习笔记:指向指针的指针
- C/C++学习笔记:指针与字符串