
C 和指针 (翻译)
路人暴脾气
探索 - 专注 - 坚持
展开
-
何为指针(四)指针,解引用和左值
Pointers or C 英文版翻译原文:6.7 Pointers,Indirection,and L-values 6.7 指针,解引用和左值 包含指针的表达式可以用来做左值吗?如果可以的话,是那个?我们回到先前的例子。给出下面的声明:int a;int* d=&a;考虑下面的表达式: 表达式 左值 表达的位置 a yes a d yes d翻译 2017-11-06 22:15:06 · 907 阅读 · 0 评论 -
动态内存(一)使用动态内存
Pointers or C 英文版翻译原文:11.1 Why Use Dynamic Allocation11.1 为什么使用动态分配 当声明一个数组时,数组的大小必须作为编译期常量被给定。数组真正需要的大小是不知道的,直到运行的时候,因为空间的数量依赖与输入的数据。例如,一个计算学生成绩和平均成绩的程序可能需要储存一个班全部学生的数据,但是不同的班学生的数量不同。这些情况下,通常的方法是声翻译 2017-11-08 17:47:56 · 853 阅读 · 0 评论 -
动态内存(二)calloc 和 realloc && 使用动态内存
Pointers or C 英文版翻译11.3 Calloc and Realloc 另外还有两个内存分配函数,calloc 和 realloc,他们的原型如下:void * calloc(size_t num_elements,size_t element_size);void * realloc(void* ptr,size_t new_size); calloc 也是用来翻译 2017-11-12 00:44:47 · 627 阅读 · 0 评论 -
何为指针(二)未初始化和非法的指针
Pointers or C 英文版翻译原文:6.5 Uninitialized and Illegal Pointers6.5 未初始化和非法的指针 下面这段代码举例说明了一个非常普遍的问题int *a;*a = 12; 声明了一个名为 a 的指针变量,并且把12赋值给了它指向的位置。但是,指针指向哪里呢?我们声明了这个变量,却从来没有初始化它。所以我们没法预测12被存储在哪里。在这翻译 2017-11-04 21:46:51 · 1775 阅读 · 2 评论 -
何为指针(一)认识指针
Pointers or C 英文版翻译原文:3.1.3 Pointers 指针是C语言非常流行的主要原因。指针可以高效的实现一些高级的数据结构,例如树和链表等等。例如像Pascal和 Modula-2 这些语言,虽然实现了指针,但是不允许指针的算术或者比较运算。这些语言也不允许创建已经存在对象的指针。幸运的是C程序员可以使用这些限制去编写比其他语言更加高效和简洁的程序。同时,没有限制的使用C翻译 2017-11-01 18:43:57 · 612 阅读 · 0 评论 -
何为指针(三)空指针
Pointers or C 英文版翻译原文:6.6 The Null Pointer 6.6 空指针 C标准定义了一个NULL指针,其值不指向任何东西的。为了使一个指针变量为UNLL,你把0赋值给它;为了测试指针是否为NULL,你把它和0比较。选择0值是源码约定,在内部,空指针的值实际是上可能有些不同。在这种情况下,编译器负责把0翻译为内部的值。 空指针的概念是十分安全的,因为它给了你指翻译 2017-11-05 23:10:12 · 671 阅读 · 0 评论