C语言基础三_指针

来源:互联网 发布:php 代码去除空白 编辑:程序博客网 时间:2024/05/01 09:04

指针

1.直接引用:
char a;
a=10;

2.间接引用:
char a=9;
char *b;//或者char *b=&a;
b=&a;//*b=&a是错的
printf("%d\n",*b);//a中的存储内容
用来存放变量地址的变量就是指针变量,b指向a,b是指针。
改变a的值:*b=10;//*b代表存储空间,即a的存储空间
3.实例:
交换两个变量的值:
void swap(char *v1,char *v2){//在16位编译环境下,指针都是占2个字节char temp;temp=*v1;*v1=*v2;*v2=temp;}int main(int argc,const char * argv[]){char a=10;char b=9;swap(&a,&b);}



注意:指针要与指向地址 数据类型相同。
若定义:,打印出来的*p值为513,即从p值开始取两个字节数据:0000 0010 0000 0001

ps:内存中声明变量存储方式顺序相反;取出存储内容顺序也相反
4.指针与数组及函数:
遍历数组:char a[3]={1,2,3}
int *p=a;
此时p+1相当于,p+1*2,依然试用,这就说明指针分类型的意义结论:利用指针加i相当于访问第i个元素

若一个函数的形参是数组,调用它时可以传指针也可以传数组,条件是指针和数组类型相同:  change(p)  or  change(a)
若一个函数的形参是指针,则既可以传数组名,也可以传指针变量。
指针和数组的关系总结如下:

遍历字符串:
2种类似的方式:第一种是定义了一个字符串变量,s中的每一个字符都可以改变。第二种事定义字符串常量,每一个字符都改变不了。

函数返回类型也可以是指针:char * test(){   return "itcast";}
指针可以指向一个函数:由于函数也有内存地址,指针可以存储地址,所以是可以的。
函数名就代表函数的地址。
定义:指针占据函数名
int sum(int a,int b){return a+b;}int (*p)(int ,int); p=sum;//利用p间接调用sum函数(*p)(5,6)//取函数值p(5,6)//不取


=======
通过这种方式来调用:利用函数指针,把函数当参数传来传去。
若开发时需要更改成减法:
只需要添加一个减法方法:
再通过就能实现,把算法传进来就行了,不用改变count函数。


0 0
原创粉丝点击