您的位置:首页 > 编程语言 > C语言/C++

C语言基础三_指针

2014-03-21 15:59 211 查看

指针

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函数。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: