栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言学习记录:复杂的声明(声明中含有*、()、[])

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言学习记录:复杂的声明(声明中含有*、()、[])

声明时可使用的符号

符号含义
*表示一个指针
( )表示一个函数
[ ]表示一个数组

复杂声明示例:

int board[8][8];        //声明一个内含int数组的数组

int ** ptr;             //声明一个指向指针的指针,被指向的指针指向int

int * risks[10];        //声明一个内含10个元素的数组,每个元素都是指向int的指针

int (* rusks)[10];      //声明一个指向数组的指针,该数组内含10个int的指针

int * off[3][4];        //声明一个指向3×4的二维数组,每个元素都是指向int的指针

int (* uuf)[3][4];      //声明一个指向3×4二维数组的指针,该数组中内含int类型值

int (* uof[3])[4];      //声明一个内涵3个指针元素的数组,其中每个指针都指向一个内含4个int类型元素的数组

关键问题是 * 、( ) 、[ ] 的优先级问题。

( ) 、[ ] 具有相同的优先级,比 * 的优先级高。结合时,从左往右结合。

函数和指针的纠缠关系

函数原型:

void ToUpper(char *);

指针指向该函数类型:

void (*pf)(char *);    //pf是一个指向函数的指针

如果第一个圆括号省略:

void *pf(char *);    //pf是一个返回字符指针的函数

函数名可以用于表示函数的地址:

void ToUpper(char *);
void ToLower(char *);
int round(double);
void (*pf)(char *);

pf = ToUpper;    //有效,ToUpper是该类型函数的指针
pf = ToLower;    //有效,ToLower是该类型函数的指针

pf = round;      //无效,round与指针类型不匹配
pf = ToLower();  //无效,ToLower()不是地址

最后一句的无效不仅仅是因为他不是地址,而且 ToLower() 的返回类型是 void ,它无返回值,不能在赋值语句中进行赋值。

指针 pf 只能指向 char * 参数,返回类型为 void 的函数!

其实这种方法使用函数在某些方面也比较简单的。

(在此就不说明指针函数的使用方法了)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/893284.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号