C语言程序设计<五>

指针与数组

void类型的指针可以存放指向任何类型的指针,但不能间接引用其自身.


有效的指针运算包括相同类型指针之间的赋值运算;指针同整数之间的加法或减法运算;指向相同数组中元素的两个指针间的减法或比较运算;将指针赋值为0或指针与0之间的比较运算.其它所有形式的指针运算都是非法的,例如两个指针间的加法,乘法,除法,移位或屏蔽运算;指针同float或double类型之间的加法运算;不经强制类型转换而直接将指向一种类型对象的指针赋值给指向另一种类型对象的指针的运算(两个打针之一是void *类型的情况除外).

字符复制:

void strcpy(char *s,char *t)

{

while(*s++=*t++)

{

;

}

}

进栈和出栈的标准用法:

*p++ = val;//将val压入栈

val =*--p;//将栈顶元素弹出到val中


指针数组:

char *lineptr[MAX];

它表示lineptr是一个具有MAX个元素的一维数组,其中数组的每个元素是一个指向字符类型对象的指针.

二维数组:

int day[] [13];  //(1)

int (*day)[13];  //(2)

(2)表示一个指针,它指向具有13个整形元素的一维数组

int *day[13]  //(3)

(3)表示声明一个数组,该数组有13个元素,其中每个元素都是一个指向整形对象的指针.


指向函数的指针:

int (*comp)(void *,void *)

它表示comp是一个指向函数的指针,该函数具有两个void *类型的参数,其返回值类型为int.


指针的复杂表示:

x is a function returning a pointer to an array of pointers to funtions returning char 

x是一个函数,它返回一个指针,该指针指向一个一维数组,该一维数组的元素为指针,这些指针分别指向多个函数,这些函数的返回值为char类型

表示为:

char (*(*x))p[])()





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值