指针学习
来源:互联网 发布:java程序开发步骤 编辑:程序博客网 时间:2024/05/01 10:50
指针
不同类型的指针,没有经过强制类型转换,不能互相赋值
int *pn, char *pc. char c = 0x65;pn = pc ;//编译出错pn = &c ;//编译出错pn = (int *)&c;int n = *pn;//值不确定
两个同类型的指针可以相减
p1-p2=(地址p1-地址p2)/sizeof(T)//地址间可以存放T型变量的个数注:指针的大小,sizeof(p)=4,64位系统为8
p++
p指向n+sizeof(T)
指针使用 “[ ]” p[n]表示*(p+n)
数组的名字就是一个指针常量: T a[n] ,则a的类型是T*,可以用a给一个T*类型的指针进行赋值。作为形参时,T *p等价于 T p[ ]。
T a[M][N]
T **p ;
p是指向指针的指针,p指向的地方应该存放着一个类型为T*的指针, * p的类型为T *
指针和字符串
字符串常量的类型是 char *
字符数组的类型也是 char *
void *p 指针,
由于sizeof(void)没有定义,所以*p 无定义,++p,–p,p+=n,p+n均无定义
作用
系统库函数,cstring中,memcpy
void *memcpy(void *dest,void *src,int n);//将地址src开始的n个字节,拷贝到地址dest,返回值是dest//调用示例int a1[10];int a2[10];memcpy(a2,a1,10*sizeof(int));//将a1的内容拷贝到a2中,结果是a2[0]=a1[0].a2[1]=a1[1],……
函数指针
在程序运行期间,每个函数会占用一段连续的内存。函数名就是该函数所占内存区域的起始地址(入口地址)。我们可以将函数名赋值给一个指针变量,使得该指针变量指向该函数。然后通过指针变量就可以调用这个函数。这种指向函数的指针变量就称为“函数指针”。
快速排序函数qsort//void qsort(void *base,int nelem,unsigned int width,int *pfcompare(const void*,const void*));//pfcompare:函数指针,它指向一个比较函数,该函数的的形式:int 函数名(const void *elem1,const void *elem2);
指针和结构体
定义指向结构变量的指针
结构名 *指针变量名
通过指针,访问其指向的结构变量的成员变量:
指针->成员变量名或:(*指针).成员变量
阅读全文
0 0
- 学习指针
- 指针学习
- 指针学习
- 指针学习
- 指针学习
- 指针学习
- 指针学习
- 指针学习
- 指针学习
- 指针学习
- 指针学习
- 指针学习
- 指针学习
- 指针学习
- 指针学习
- 指针学习
- 指针学习
- 指针学习
- 系统架构图
- HDU 3006 The Number of set (状态压缩)
- 7-16 java学习笔记
- 常用的MySQL的指令
- Bootstrap 中200个来自 Glyphicon Halflings 的字体图标
- 指针学习
- 机器学习笔记之反向传播算法
- 怎么解决VMware“该虚拟机似乎正在使用中”问题
- 账号被盗,如何强制下线?
- Android自定义加载圈
- Java学习笔记 04
- 【C/C++】sizeof问题总结
- C++枚举类型
- 刷题记录-codevs2144 砝码称重 2