c++之指针用法总结

来源:互联网 发布:绍兴网络电视台回看 编辑:程序博客网 时间:2024/05/17 21:25

一、介绍一些基本概念

1、一个变量的地址即为一个变量的指针

2、变量的访问的两种方式直接访问和间接访问

直接访问:按变量地址直接存取变量

间接访问:将变量地址存放在另一个变量中

3、运算符

 * 符号表示指向,指针运算符(或间接访问运算符)*p为指针变量p所指向的存储单元

& 取地址运算符 &a为变量a的地址

二、指针的一些定义和用法

1、类型名 * 变量名; //定义指针变量指向某个类型

int *p; 

2、类型名 *变量名[n];  //定义指针数组,由n个指针元素构成的数组

int *p[n];

3、类型名 (*变量名)[n];//定义指向含n个元素的一维数组的指针变量

int (*p)[n];

4、类型名 * 函数名();//返回值为指针的函数

int *max();

5、类型名(*变量名)(); //指向函数的指针

int (*p) ();

 

#include<iostream>int main(){int max(int x,int y); //函数声明int (*p)(int,int);//定义指向函数的指针int a ,b ,m;p=max;cin>>a>>b;m=p(a,b);cout<<"max="<<m<<endl;return 0;}

其实就是用(*p)取代了max

6、类型名* *变量名;//指向指针的指针变量

int * *p; // p是一个指针-->指向了一个指向int型变量的指针。

 

三、特别的“别名"应用

1、指向数组的指针,即用指针名取代数组名

引用数组元素的方式:

下标法 a[i]

指针法 *(a+i)或*(p+i)

2、指针作为函数的参数,其实就是讲变量的地址赋给指针

3、指向函数的指针,其实就是用(*p)取代原函数名,如上。

4、变量的引用

int a;

int &b=a;//引用的声明,其实就是给a起一个别名b,共同指向同一内存地址

引用在作为函数参数时很有用喔!和指针相同的效果,却比指针更直观!!!

int main(){    void swap(int &a,int &b);    int i=3,j=5;    swap(i,j);//a,b即成为i,j的别名
    cout<<i<<" "<<j<<endl;    return 0;}
void swap(int &a,int &b){int temp;temp=a;a=b;b=temp;}
输出结果 5 3

四、void 和void* 的区别

void 是指”无类型“

void* 是”无类型指针“,void *可以指向任何类型的数据

在作为函数参数时,它可以接收任何类型的参数,这在传递(void*)this类型的参数时,很重要!

 


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0 0