c语言指针用法

一、指针

int t定义整型变量
int *pp为指向整型数据的指针变量
int a[n]定义整型数组a,它有n个元素
int *p[n]定义指针数组p,它由n个指向整形数据的指针元素组成
int (*p)[n]p为指向含n个元素的一维数组的指针变量
int f()f为返回整型函数值的函数
int *f()p为返回一个指针的函数,该指针指向整型数据
int (*f)()p为指向函数的指针,该函数返回一个整形值
int **pp是一个指针变量,它指向一个指向整形数据的指针变量

 

二、指针与变量

 

三、指针与数组

指针数组

(1)定义

(2)定义形式:类型名 *数组名[数组长度]

如要将二维数组赋给一指针数组:
int *p[3];
int a[3][4];
for(i=0;i<3;i++)
p[i]=a[i];
这里int *p[3] 表示一个一维数组内存放着三个指针变量,分别是p[0]、p[1]、p[2]
所以要分别赋值。

注:指针数组常适用于指向若干字符串,这样使字符串处理更加灵活方便

数组指针

(1)定义

(2)定义形式 类型名 (*指针变量名)[数组长度]

如要将二维数组赋给一指针,应这样赋值:
int a[3][4];
int (*p)[4]; //该语句是定义一个数组指针,指向含4个元素的一维数组。
 p=a;        //将该二维数组的首地址赋给p,也就是a[0]或&a[0][0]
 p++;       //该语句执行过后,也就是p=p+1;p跨过行a[0][]指向了行a[1][]

所以数组指针也称指向一维数组的指针,亦称行指针。

注:

四、指针与字符串

(1)char* string;string="I love China!";但不可以char string[14];string="I love China!";

(2)定义字符数组后,在编译时为它分配内存单元,它有确定的地址;而定义一个字符指针,在使用前必须为其指向具体的地址;

如下面是正确的:

char *s,str[10];s=str;

五、指针与函数

指针函数

(1)定义:指针函数是指函数的返回值类型是一个指针类型,即本质是一个函数

(2)定义形式:数据类型 * 函数名(参数列表)

注:

 

函数指针

(1)定义:指向函数的指针

(2)定义形式:数据类型 (*指针变量名)(参数列表)

注:一般传输一函数指针,返回处理后的该指针地址

I,在给函数指针变量赋值时,只需给出函数名而不必给出参数(因为是将函数入口地址赋给函数指针,而不涉及实参与形参的结合的问题),如:

int max(int,int);

int (*p)(int,int);

p=max;

II,用函数指针变量调用函数时,只需将指针名代替函数名即可,括号中需要实参,如

int c;

c=(*p)(a,b);

 

 

转载于:https://www.cnblogs.com/gjianw217/p/3257493.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值