现在的位置: 首页 > 综合 > 正文

C语言基础三_指针

2018年05月26日 ⁄ 综合 ⁄ 共 961字 ⁄ 字号 评论关闭

指针

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函数。

【上篇】
【下篇】

抱歉!评论已关闭.