指针运用

1、指针是一个地址,指向的是个类型。

2、指针指向的是地址,地址指向的是内容。

我们需要一个变量,来存储地址,这个变量的值是地址,但是我们可以通过修改变量的值,来不断的改变地址,但是,我们如果需要改变该个地址的值的话,就需要,对地址的值进行修改,而不改变地址。

int a = 10;

int *p ;

p = &a;

*p =11;

a=?

这里我们看到,p 是一个变量,我们使用p来存储变量a的地址,这是,我们使用*p对于这个变量进行赋值,那么a的值最后,是多少呢,结果是11,因为我们使用*p赋值,就相当于a=11,赋值效果一样的。

3:指针的指针,是面对于指针的变量

char *p;

char **pr;

pr = &p;

我们这样看就清楚了一点,char *(*pr); *pr是一个存储的值为指针的变量,pr就是存储上个变量地址的变量。整合起来就是,pr是一个存储的值为指针的地址的变量。

4、指针引用数组

int a[30];*p=a;

下标法:即用a[i]形式访问数组元素。

指针法:即采用*(a+i)或*(p+i)形式,用间接访问的方法来访问数组元素,其中a是数组名,p是指向数组的指针变量,其处值p=a。a[i]、*(a+i)、p[i]、*(p+i)等价。

5、int a;

   int* p=&a;

 *(p++)与*(++p)作用不同。若p的初值为a,则*(p++)等价a[0],*(++p)等价a[1]。6) (*p)++表示p所指向的元素值加1。 如果p当前指向a数组中的第i个元素,则:

*(p--)相当于a[i--];

*(++p)相当于a[++i];

*(--p)相当于a[--i]。

6、指针数组和数组指针分别是什么?

指针数组:指针数组可以说成是”指针的数组”,定义int *p[n]。

首先这个变量是一个数组,其次,”指针”修饰这个数组,意思是说这个数组的所有元素都是指针类型,在32位系统中,指针占四个字节。

char *arr[4] = {"zhi", "zhen", "shu", "zu"};

/*arr就是我定义的一个指针数组,它有四个元素,每个元素是一个char *类型

的指针,这些指针存放着其对应字符串的首地址。*/

[]优先级高,先与arr结合成为一个数组,再由char*说明这是一个char*指针数组,它有n个指针类型的数组元素。

(定义一个指针数组,可以写成char *(arr[4]),不过在定义之前一定要清楚自己定义的变量,如果目的是一个数组,那就把arr[4]括起来,如果是一个指针,就把*arr括起来。)

数组指针:数组指针可以说成是”数组的指针”也称行指针,定义 int (*p)[n]。

首先这个变量是一个指针,其次,”数组”修饰这个指针,意思是说这个指针存放着一个数组的首地址,或者说这个指针指向一个数组的首地址。 

7、多维数组表示

例如:1行3列元素的地址:a[1]+3,*(a+1)+3,&a[1][3]

          1行3列元素:*(a[1]+3),*(*(a+1)+3),a[1][3]




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值