关于指针

 

l  高级语言中的变量有三个属性:变量的名字,变量的值,变量的地址。

数据类型决定了一个变量在内存中所占用的存储空间的大小以及允许执行的运算。

l  指针变量的两种运算符:

&:取地址运算符

*:指针内容运算符(间接访问运算符)

C语言中用NULL表示空指针。

1.       &”只能作用于变量,包括基本类型变量和数组的元素,结构体类型变量或者结构体的成员,不能作用于数组名,常量或者寄存器变量。

2.       单目运算符“*”是“&”的逆运算,他的操作数是对象的地址,“*”的结果是对象本身;单目“*”是通过变量的地址存取(或者引用)变量。

l  指针变量的声明和初始化

例:

先声明在初始化:

int a,* pa;

pa=&a;

或者声明的同时初始化:

int a,*pa=&a;

注意:不要将上面的表达式与一般的赋值语句混淆,也不要表示成:int a, *pa; *pa=&a;这是错误的。

l  指向函数的指针:

例:

#include <stdio.h>

 

max(int x,int y)

{

       return (x>y)?x:y;

}

hello()

{

       printf("Hello World!/n");

}

int main()

{

       int (*pf)();/*函数指针定义*/

       int a=1,b=2,c;

       pf=max;/*将函数的入口地址赋给指针*/

       c=(*pf)(a,b);/*用指针调用函数*/

       printf("a=%d,b=%d/n",a,b);

       pf=hello;/*将另外一个函数的入口地址赋给指针*/

       (*pf)();/*用指针调用另外一个函数*/

}

注意:

1.    声明

类型标识符 *指针变量名)();

*指针变量名外部必须用括号,因为()的优先级比*高,容易与返回指针的函数混淆。

2.    一个函数指针可以先后指向不同的函数,但是必须用函数的地址为函数赋值。如果有函数指针(*pf)(),则pr+n,pf++,pf—都等运算都是没有意义的。

l   

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值