第六章
一、定义:
类型 *标识符(=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,返回都不用返回。但是有的时候,我们不是单独返回一个值,所以会返回变量的指针。
领取专属 10元无门槛券
私享最新 技术干货