c++ 指针和数组
来源:互联网 发布:金山特大网络诈骗团伙 编辑:程序博客网 时间:2024/05/12 01:38
本章主要介绍c++常用的指针,包括基本类型指针,数组指针,函数指针,数组指针等。
常用的数组,包括基本类型数组,函数数组,指针数组等。
1.基本类型指针
如:int* s;//该指针表示只向一个int型数据的指针,内存里存放的是某个int型数据的地址,(任何指针类型在32位系统中占4个字节)
int a; //a在栈里存放
s=&a;//s里存放的是变量a的地址
基本类型数组
如:int b[7];//b表示一个装有7个int数据元素的数组,定义数组时,明确数组的长度
数组名表示的是数组首元素地址,也就是上面,b,&b,&b[0]的值是一样的。虽然值是一样的,但是表达的意思还是不同,b(数组名)和&b[0]表示的意思一样,都表示数组首元素的地址,而&b表示的是该数组的地址。
int* t = b;
int *t1 = &b[0];
//这两种写法都正确,因为数组首元素是int类型,用指向int型的指针是正确的。
int* er = &b;//错误的,因为&b表示的是数组的地址,本例中应该用指向装有7个int型数据元素的数组指针才对。
int (* tr)[7];//定义一个指向装有7个int型元素数组的指针。(下面详细讲解)
tr = &b;//正确。
2.数组指针
如上例的:int (*tr)[7]; //这里定义的一个数组指针,指向的装有7个Int型元素数组的指针
理解方式:都知道int p[7]; p表示一个装有7个元素的数组,这里int (*tr)[7],用*tr替换p,*tr表示一个装有7个元素的数组,则tr表示的就是一个装有7个int型元素数组的指针。
指针数组(即存放指针的数组)
如: int* s[10];//这是一个简单的指针数组,s表示一个存放10个int型指针的数组。
理解方式:[](下标运算符)的优先级高于*运算符,s[10]表示存放10个元素的数组,*号表示存放的数据类型是否是指针。
3.函数指针
如: int (*p)(int a,int b) //定义一个函数指针p,用于指向一个带两个int型参数,且返回值是int型的函数
int add(int a,int b)
{
return a+b;
}
p = add; //正确赋值,函数名实际上就是函数地址
p(3,4); //正确调用
一般我们会用typedef int (*p)(int a,int b) 声明一个函数指针类型
p s; //s表示的就是一个指向带两个Int型参数且返回值是Int型数据的函数
函数指针数组
如: int (*p[2])(int a,int b); //表示函数指针数组,p表示存放2个函数指针的的数组,且函数指针是指向带两个Int型参数且返回值是Int型数据的函数;
理解方式:都知道int (*)(int a,int b)声明带两个int型参数返回值是Int型数据的函数指针类型,而[]运算符的优先级高于*,int (*p[2])(int a,int b);p表示存有两个函数指针的数组.
指向函数指针数组的指针
如:int (* (*p)[2])(int a,int b) ; //p表示指向存有2个函数指针的数组。
理解方式:()优先级高,*p看成一个整体t,则int (* t[2])(int a,int b);t表示的是函数指针数组,所以p表示指向函数指针的数组
注意: 指针是针对内存的,指针的加减实际上是以指针所指类型为单位进行加减的
- 【c/c++】指针数组和数组指针
- c++---数组和指针
- C 指针和数组
- C -- 数组和指针
- C++:数组和指针
- C 指针和数组
- C:数组和指针
- C:指针和数组
- 《C和指针》- 数组
- C指针和数组
- c 数组 和 数组指针
- 指针数组和数组指针(C)
- 指针数组和数组指针(C)
- C指针数组和数组指针
- C语言指针数组和数组指针
- C语言指针数组和数组指针
- C语言指针数组和数组指针
- C语言指针数组和数组指针
- UML常用图的几种关系的总结
- Android 中LayoutInflater(布局加载器)源码篇之createViewFromTag方法
- 笔记筑:Basic Part
- 【足球】我要热爱足球
- Java虚拟机的内存结构
- c++ 指针和数组
- Effective STL 43 Prefer algorithm calls to hand-written loops
- 波形音频(WAVE)底层接口的学习与使用
- python dict sorted 排序
- JavaScript基础 表单验证
- 一个好用的多边形控件
- C语言调用数据库
- 简单的鼠标悬停效果
- IE8可以兼容HTML5的标签