指针

关于指针的理解

*指针用来调用变量的内存地址。
*每个变量都有自己的内存地址。

如果变量p的内容是变量i的地址,则p是一个指针变量。且称p指向i(p->i)。

*指针变量可以指向变量,数组,函数

指向变量的指针变量

定义

类型符 *指针变量名;//(类型符是指针所指向变量的类型)
int i=100;
int *p;//指针变量p的定义形式&)取地址 //若a是数组,则a为地址常量,不能用a++。*)取指针变量所指内容 
p = &i = &(*p)
i = *p = *(&i)

初始化和赋值

初始化:
int i=1;
int *p=&i;//将i的地址赋给p(指针变量)。

初始化为空指针:
int *p=0;
或者
int *p=NULL;//NULL在stdio.h中为符号常量,代表0.

赋值:
int i,*p,*q;
p=0;
p=&i;
q=p;//可得 p->i && q->i。

*赋值时指针变量不能带*,而且一定要赋值为地址或者0.

指针与数组

指针与一维数组

int a[10];
1.
int *p=a;(相当于int *p=a[0];
2.
int *p;
p=a;
3.
int *p;
p=&a[0];


*若把p初始化为a[0]的地址,那么a[i]可以用p[i]来表示(或者*(p+i))

 p+i表示&a[i],引用a[i]可以用*(p+i)。
————————
则(p+1)==&a[1];
 *(p+1)==a[1];
 p++=&a[1];

*如果指针p,q指向同一数组,p-q等于两个指针之间元素的个数。

指针与二维数组

*把二维数组看做元素是一元数组的一元数组。
首先要知道
int a[3][4];
a=a[0][0];
a+1=a[1][0];
a[0]+1=a[0][1];

定义

(指向一维数组的指针变量(整体))
int a[4],(*p)[4]=&a;//类型符(*指针变量名)[数组长度] 
所以*p=a
*如果是*p[4],则p是一个指针数组。
*可以让这个指针变量指向二维数组的某一行。

例如:

int a[3][4],(*p)[4]=a; //[]里的数必须和列数一致。
p->a[0]
p+1->a[1]

引用形式有四种,以a[0][0]和a[0][1]举例。

1.a[0]=a[0][0]=*a[0]=**a=(*a)[0]=*(a+0)

2.a[0]+1=a[0][1]=*(a[0]+1)=*(*(a+0)+1)=(*a)[1]

指针与函数

指针与动态内存

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值