摘要: 指针数组: int *p1[10]; 存储指针的数组。即数组每一个元素为某一类型的指针。 数组指针: int (*p1)[10]; 指向数组的指针。它是一个指针,它指向一个数组,数组在这里并没有名字,是个匿名数组。 指针函数 它是一个函数,函数返回值为某一类型的指针。 eg. 函数指针 函数的指针, 阅读全文
posted @ 2016-04-10 16:35 Xavier_Tse 阅读(153) 评论(0) 推荐(0) 编辑
摘要: 在X86系统下,以下程序输出的值为多少? 执行以上代码,运行结果为: 分析: &a+1:取数组a的首地址,该地址的值加上 sizeof(a) 的值,即:&a + 5 * sizeof(int),也就是下一个数组的首地址,显然当前指针已经越过了数组的界限。 *(a+1):a 和&a的值是一样的,但是意 阅读全文
posted @ 2016-04-07 20:26 Xavier_Tse 阅读(369) 评论(0) 推荐(0) 编辑
摘要: 问题: const volatile int i=10;这行代码有没有问题?如果没有,那 i 到底是什么属性? 回答: 没有问题,例如只读的状态寄存器。它是volatile,因为它可能被意想不到地改变;它是const,因为程序不应该试图去修改它。 volatile和const并不矛盾,只是控制的范围 阅读全文
posted @ 2016-02-24 10:20 Xavier_Tse 阅读(241) 评论(0) 推荐(0) 编辑
摘要: 1)先从const int i说起。使用const修饰的i我们称之为符号常量。即,i不能在其他地方被重新赋值了。注意:const int i与int const i是等价的,相同的,即const与int的位置无所谓。2)const int *p看例子:int i1=30;int i2=40;cons 阅读全文
posted @ 2015-09-10 10:40 Xavier_Tse 阅读(260) 评论(0) 推荐(0) 编辑
摘要: 目的: 基本掌握了 make 的用法,能在Linux系统上编程。环境: Linux系统,或者有一台Linux服务器,通过终端连接。一句话:有Linux编译环境。准备: 准备三个文件:file1.c, file2.c, file2.h file1.c: #include <stdio.h> #incl 阅读全文
posted @ 2015-04-16 16:28 Xavier_Tse 阅读(161) 评论(0) 推荐(0) 编辑
摘要: C/C++堆栈指引 Binhua Liu 前言 我们经常会讨论这样的问题:什么时候数据存储在堆栈(Stack)中,什么时候数据存储在堆(Heap)中。我们知道,局部变量是存储在堆栈中的;debug时,查看堆栈可以知道函数的调用顺序;函数调用时传递参数,事实上是把参数压入堆栈,听起来,堆栈象一个大杂烩 阅读全文
posted @ 2015-04-07 11:18 Xavier_Tse 阅读(296) 评论(3) 推荐(0) 编辑
摘要: 最近在CU论坛上有很多人在问这样一个问题:给出一个结构体成员的地址计算该结构体的起始地址。其实这个题我之前也没有接触过,据说内核代码中有这样用的,但还没有看到。不过觉得这个题的解决方法还是有一定技巧的,就总结一下。下面是实现的代码。 其实整个程序中最关键的部分就是如何求出结构体中某个成员相对于结构体 阅读全文
posted @ 2015-04-01 09:44 Xavier_Tse 阅读(899) 评论(0) 推荐(0) 编辑