易截截图软件、单文件、免安装、纯绿色、仅160KB

可变目标C编译器 第4章 类型

C程序中具有丰富的数据类型,包括声明中显式定义的类型和用做表达式中间类型的导出类型。例如,下面的赋值语句包含3 种不同类型:
    int *p, x;
    *p = x;
x是一个存放整数的单元的地址,因此x的地址的类型是:指向一个整数的指针。x的值的类型是整型。同样, p的左值的类型是指向一个整数的指针的指针,p的右值的类型是指向一个整数的指针,*p的类型是整数。lcc在编译赋值语句时必须处理所有这些类型。
lcc实现了类型表示和一组该表示之上的函数,本章将对此进行介绍。函数包括创建类型的类型构造函数以及测试类型 的类型断言函数。lcc还必须实现类型检查,确保声明和表达式遵守语言制定的规则。类型检查使用本章介绍的断言函数,详细参见第9章和第11章。
4.1 类型表示
C语言的类型通常用英文的前缀形式描绘,所谓前缀形式,就是指类型操作数在类型操作符之后出现。例如,int *p声明p是一个指向int的指针,就是C类型int*的前缀表示,指针是操作符,int是操作数,同样,char*(*strings)[10]将strings说明为:
    一个指针,指向
       一个大小为10的数组,每个数组元素是一个
          指针,指向
             字符
操作数在它们各自的操作符下以阶梯方式缩进。
表示这种前缀类型规范的方法有很多。例如,一些老的C编译器使用位串来表示,类型操作符和基本类型用若干位编码。位串表示非常紧凑并易于操作,但是一般会对基本和操作符的数目做一定限制,并且不能拥有表示大小的数据,例如不能表示数组的大小。
lcc 通过能反映类型的前缀规范的链接结构来表示类型,类型节点定义如下:
    (types.c typedefs) =
        typedef struct type * Type;
    (types.c exported types) =
          struct type {
                int    op;
                Type type;
                int    align;
                int    size;
         &


相关文档:

C和C++程序员学习历程

如何学习C和C++才不茫然,才不是乱学,想了一下,这里给出一个总的回复。
  一家之言,欢迎拍砖哈。
  1、可以考虑先学习C.
  大多数时候,我们学习语言的目的,不是为了成为一个语言专家,而是希望成为一个解决问题的专家。做一个有用的程序员,做一个赚钱的程序员。我们的价值,将体现在客户价值上,而不是语 ......

c获得文件大小

 1.MFC中的方法:(C++)
CFileStatus status;
CFile::GetStatus("D:\\test.txt",status);
long lSizeOfFile;
lSizeOfFile = status.m_size;
lSizeOfFile的值就是D:\\test.txt文件的大小
2.标准C获得文件大小的5种方法
(注意:"__FILE__"指的是当前文件,你可以改为有效路径的目标文件,比如"D:\\test.txt")
#i ......

C/C++数组名与指针区别深入探索

(1)
数组名的内涵在于其指代实体是一种数据结构,这种数据结构就是数组;
(2)
数组名的外延在于其可以转换为指向其指代实体的指针,而且是一个指针常量;
(3)
指向数组的指针则是另外一种变量类型(在WIN32平台下,长度为4),仅仅意味着数组的存放地址
(4)
数组名作为函数形参时,在函数体内,其失去了本身的内涵 ......

弄了半夜就没想明白,掉进C陷阱了,555

 
//输入一个数组,再修改这个数组所有元素,如何实现?
int main()
{
 vector<int> a;
 int i(0);
 while(cin>>i)
  a.push_back(i);
 //////////////////////////////////////////////////////输出建立的数组:
 cout << "得到的数组为:" << ......

经典c/c++算法

二分查找的代码.
int bfind(int* a,int len,int val)
{
    int m = len/2;
    int l = 0;
    int r = len;
    while(l!=m && r!= m)
    {
        if(a[m] > val)
  & ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号