摘要: 相信不少的C语言初学者都知道,数组名相当于指针,指向数组的首地址,而函数名相当于函数指针,指向函数的入口地址。现在又这样一个问题,如果对数组名取地址,那得到的会是什么呢?很多人立刻会想到:给指针取地址,就是指针的指针,既二级指针嘛!当然这样的结论是错误的,不然这篇笔记也就没有意义了。 下面我们来逐步 阅读全文
posted @ 2017-11-19 22:16 立体风 阅读(2458) 评论(1) 推荐(1) 编辑
摘要: http://blog.csdn.net/daniel_ice/article/details/6857019 以下代码会打印出什么样的日志呢? [cpp] view plain copy #include <stdio.h> int a[2] = {1,2}; int main(){ printf 阅读全文
posted @ 2017-11-19 22:06 立体风 阅读(510) 评论(0) 推荐(0) 编辑
摘要: (8)开发可变参数函数 在c语言中,可变参数的函数极其常见,如常用的printf()。可变参数函数的一般形式如下: [cpp] view plain copy 返回值类型 函数名(类型1 参数1,类型2 参数2,...类型n 参数n,...); [cpp] view plain copy [cpp] 阅读全文
posted @ 2017-11-19 21:49 立体风 阅读(162) 评论(0) 推荐(0) 编辑
摘要: (6)const的使用 c中的const表达着“常量”的意思,更准确地说是“read-only”(只读)的含义。当const与指针相遇时,由于其与*的相对位置不同,会产生不一样的效果。 举例说明 (1)const位于*的左侧 如,const int *p;此时等同于int const *p; 此时, 阅读全文
posted @ 2017-11-19 21:48 立体风 阅读(177) 评论(0) 推荐(0) 编辑
摘要: (7)指针运算 在前几篇文章中,我们已经见过指针运算的使用场景,并多次使用指针运算来进行验证。这里我们来特别地总结下,指针运算的本质含义。 在c语言中,假设p、pa、pb都是某种类型的指针,这样的运算被称为指针运算(算术运算): 其本质是 1.。 2.,得到的是逻辑存储单元数,而不是简单的物理字节数 阅读全文
posted @ 2017-11-19 21:48 立体风 阅读(150) 评论(0) 推荐(0) 编辑
摘要: (5)c数组本质 c中的数组是一种聚合类型,把同种类型的元素按顺序存储,即是数组。c中数组类型的特点在于:它是嵌套定义的。 看下一个二维数组int array[2][3]={{1,2,3},{4,5,6}};的内存存储形式: c中的数组是嵌套定义的:二维数组的元素是一维数组,三维数组的元素是二维数组 阅读全文
posted @ 2017-11-19 21:47 立体风 阅读(128) 评论(0) 推荐(0) 编辑
摘要: (4)解析c的声明语句 在继续探索c指针之前,有必要来解析下c语言中复杂的声明语法。 只需要记住两则:一个原则,一个规则。 原则:先看标示符。 规则:运算符优先级是规则。 举例说明 1.最简单的 int array[3]; 结论:array是数组,数组规模是3,元素类型是int。 解析过程:先看标示 阅读全文
posted @ 2017-11-19 21:46 立体风 阅读(171) 评论(0) 推荐(0) 编辑
摘要: (3)指针和数组 在c中指针和数组似乎有着千丝万缕的关系。其实它们不是一回事:指针是指针,数组是数组,两者不相同。 说它们有关系,不过是因为常见这样的代码: [cpp] view plain copy int main() { int array[] = {1,2,3,4,5}; int n = s 阅读全文
posted @ 2017-11-19 21:45 立体风 阅读(117) 评论(0) 推荐(0) 编辑
摘要: (2)内存分配 c语言中描述变量的时候常用的两个用语 1.作用域:也叫可见域,指的是变量的作用范围。在哪个范围内,该变量是可见的、可以使用的。 2.生存期:也叫存储期,指的是变量从创建到销毁的生存时间段。 作用域和存在域是两个不同的概念,比如在程序的某个位置,某变量存在(内存中分配了地址)但不可见( 阅读全文
posted @ 2017-11-19 21:44 立体风 阅读(179) 评论(0) 推荐(0) 编辑
摘要: (1)指针就是地址 首先明确一个观点:指针就是地址。这是理解指针的起始一步。 直观感受下,变量的地址 [cpp] view plain copy int main() { int foo; int *foo_p; foo = 5; foo_p = &foo; printf(" foo...%d\n" 阅读全文
posted @ 2017-11-19 21:43 立体风 阅读(278) 评论(0) 推荐(0) 编辑
摘要: 序 c语言中有一个重点:c指针。它也是一个难点。当然,这是一句废话:重点往往也是难点。在c标准中,对指针的定义是这样的: c指针似乎很难理解,以至于有人指出:掌握了c指针,就掌握了c语言的精髓。本系列就来聊聊c指针,要想弄懂c指针。光就指针本身进行理解,还不够。 因为指针的本质就一句话:指针就是地址 阅读全文
posted @ 2017-11-19 21:41 立体风 阅读(233) 评论(0) 推荐(0) 编辑
摘要: 数组名不能简单的认为是一个指针常量,这不符合c语言的一贯逻辑。 1、数组名的内涵是其指代实体是一种数据结构,这种数据结构就是数组。 2、编译器可以根据上下文环境,将数组名转换为指向该数组首元素的指针,注意这个指针的类型为该元素的类型。 例题:数组名指代一种数据结构:数组 阅读全文
posted @ 2017-11-19 20:36 立体风 阅读(918) 评论(0) 推荐(0) 编辑
摘要: //char (*(*x[3])())[5];//x是什么类型的变量? // //分析C语言声明,关键是搞清楚这个变量是个什么东西(函数、指针、数组), //是函数那么剩下的就是他的参数和返回值, //是指针那剩下部分是说明他指向什么, //是数组剩下的部分就是说明数组的成员是什么类型。 //解析C 阅读全文
posted @ 2017-11-19 19:22 立体风 阅读(355) 评论(0) 推荐(0) 编辑