C程 第六章

第六章

一、定义:

类型 *标识符(=NULL/&变量)

二、引用:

Int *ip

Ip=&i(引用地址)

*ip=i(引用值)

注:*ip和i就是一体的,其中一个变化,另一个也变;

如图,a变*b跟着变比较好理解,但是*b变了a也会跟着变呢。

指针一定要先指向一个地址才能做数值上的变化。

三、指针数组:

1)把指针指向数组(的下标),程序里默认指针的单位和数组是一样的,即p=&a[1]

p++;(这个时候p就指向&a[2])

这里还有一个默认,就是p=a(a为数组名),表示p=&a[0].a+i/p+i表示a[1],a和p的作用一样,虽然一个是数组名,一个是指针。p=a的时候*(a+i)=*(p+i)=a[i]=p[i]

特别的,若p=&a[10].则(a+i)=(p+i-10),即a[i]=p[i-10]

2)字符指针数组

char *p,*q=”字符串”;

p=“字符串”;

p和q 指向的地址是字符串的第一个字符的地址,不是整个字符串!指针只能针对一个个字符!

通过指针不能修改字符串中的内容(差评!)

输出:

char s[]=”字符串”,*cp=“字符串”

printf(“%s\n”,s);printf(“%s”,cp) 注意这里直接的引用的cp,和字符数组一样。

四、指针形参:

指针形参在函数中用到的,它传递的是地址。要注意的就是,指针像“扎”在了被指向的值上一样,指针和被指向的对象同变化。

我们之前学的函数,从主函数中调用其他函数时候,是把值复制一份到其他函数中,最后再返回值到主函数中,指针形参不是这样,要变一起变的,

五、数组形参:

1)数组形参传递的也是地址,可以指定数组的某个下标开始往后的若干个元素,不需要提前固定元素个数,可通过外加一个int形参n来控制。

由于指针形参和数组形参都是传递地址,所以数组形参也可以表示成指针形参的样子。

2)字符串处理

有数组的地方,一定有字符串,因为字符串自己有结束符,所以不必另外引用n来控制。

*s==‘\0’的时候,就说明到头了。

六、指针数组:

这一部分指针和数组搞来搞去,大家不要被名字弄乱了。指针数组指的是一个数组里面放了许多指针。

定义:

类型说明符 *p[常量表达式]/*p[]={&变量,& 变量,& 变量,&变量}

例子:int *p[10],表示存有十个指针的地址

这样,我们在写程序的时候,可以引用指针或者被指向的对象来处理问题。

特别的,说到数组一定有字符串,关键在于每一个指针都指向一个字符。

七、返回变量的指针的函数:

变量的指针变了,变量也就变了,根据书p127,返回都不用返回。但是有的时候,我们不是单独返回一个值,所以会返回变量的指针。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180613G16UVT00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

同媒体快讯

扫码关注云+社区

领取腾讯云代金券