c语言遗漏梳理
2018-06-18 04:02:12来源:未知 阅读 ()
2017-06-10
如有错误理解之处还望各位大牛指正,您可以直接评论,也可直接发送问题至邮箱844159529@qq.com,愿同诸位共同探讨!小生不生感谢。
C语言中指针灵活之处正确认识 数组 函数 const 与指针的组合。
(一)同比其它类型 指针的特殊之处整理如下:
解读方式如: int a ; 类型说明符 变量名;
但是对于指针的不同之处就是 对于指针有两种解读方式,可以说指针就是墙头草,两边倒。具体使用如下;
int * a;
解读方式一 类型说明符 变量名; 这里也就是说 int * 是类型符 a是变量。
但是这种方式会让人误会,申请多变量 int a, b, c; 但是用户按此想法会写成形如 int * a,b,c; 所以这是错的,所以用户需注意 断开方式是 int *a; 将*靠近变量断即可。但是意思解读 仍为 类型说明符 变量名;此时用户申请习惯是 int *a,*b,*c;
解读方式二 1指针单元 2指针符号 3变量; int * a;
2一个指针 3a 指向1指针单元 int;
解读方式三 墙头草
参考 int a; 我们把形如此例的变量 数组 函数 结构体 都看做为: 类型说明符 变量名; (除变量外都是 类型说明符)。同时带入指针的两种解读方式;
由上述两种方式解释 以下特例 指针 数组 函数 的关系;
A. int * a[3]; 数组 char * test( a,b); 函数
B. int (*a)[3]; 指针 char (* test)(a,b);指针
指针是墙头草
在没有强调的情况下 它是从左向右 上例 的A组分别 是int * char * 是向int同理的 数据类型,
B组由于有围墙(括号)指针倒向变量的这一侧 解读的时候 就是 一个指针 a 指向 类型 int [3] ; 指向类型 char (a,b);
关于赋值 ,指针a赋值的对象是 int 【3】类型的指针 如 int b【3】 a=&b;
函数 名称如同数组名称本身有地址特性;所以 test= 函数名称即可,不需要取地址符,加上取址符同样可以;
但是需要在赋值的过程中自我的虚拟地址化: test= (&)函数名称; 这里的这个&,是假想的,这样更易理解后续函数的执行,这里只是方便理解,并不是真正意思。(摒弃坏的想法)
函数执行时方式有test(); 或者(*test)(); 也就说加不加星号都可执行函数,默认情况下我们调用函数不加星号,但是这里为了区分时指针所以加星号,星号去除也是对的。
不说指针 ,不管何时(正常的时候我们调用子函数从不加星号,但是你加了也不错,只是你没有尝试)。
#include <stdio.h> typedef int (* T)(char a); void test(T p){ T w; w=p; w(8); p(9); (*w)(10); (*p)(11); } int er(char a){ printf("zheshi %d",a); } int main(void) { test(&er); test(er); return 0; }
上述验证代码验证了 函数名称在赋值与执行过程中取址符可有可无;
(二)关于const 对修饰变量 解读 也是拆分为类型说明符 变量名;
如: int const a;
const int a;
const int * a; //指针解读 方式二 一个指针 a 指向const 修饰int型数据,也就是指针指向的对象是const修饰的 ,进一步就是无法通过指针修改数据; 对象
int * const a; // 解读 一个指针 a,a被const修饰,指向 int型 ; 指针
名称定义
函数指针
const
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
下一篇:c语言学习目标
- 关于各种不同开发语言之间数据加密方法(DES,RSA等)的互通的 2020-06-07
- C语言程序结构 2020-05-31
- 每日干货丨C++语言主流开发工具推荐! 2020-04-28
- C语言实现经典游戏——扫雷! 2020-04-17
- C语言中的宏定义 2020-04-04
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash