指针学习

指针

不同类型的指针,没有经过强制类型转换,不能互相赋值

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)=464位系统为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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值