C和指针_C专家编程_C陷阱与缺陷_C语言编程要点__总结

时间:2026-01-21

C和指针_C专家编程_C陷阱与缺陷_C语言编程要点__总结

《C和指针》 《C专家编程》 《C陷阱与缺陷》 《C语言编程要点》

《编程精粹--Microsoft编写优质无错C程序秘诀》

总 结

说明:总结的知识点主要源于上面的4本书,《编程精粹--Microsoft编写优质无错C程序秘诀》这本书未做总结,该书有清晰版的pdf格式的电子版。

C和指针_C专家编程_C陷阱与缺陷_C语言编程要点__总结

指针和数组相关概念

************************************************* 字符与字符串的区别 指针与数组1 指针与数组2

指针和数组的相同与不同

用malloc为字符串分配存储空间时的注意事项

作为常数的数组声明(c缺陷与陷阱3.3节.在其它部分有包含该节的知识点,了解or略过) 字符串常量

用字符串常量初始化指针和数组 二维数组下标操作的相关概念 指向一维、二维数组的指针

array_name和&array_name的异同

数组作为函数的参数时,不能通过sizeof运算符得到该数组的大小 用strlen()求字符串的长度

‘char **’ 和 ‘const char **’的兼容性问题 空指针相关的问题 NULL和NUL的区别

未初始化的指针和NULL指针的区别 理解函数的声明 函数参数的传值调用 函数指针

作为函数参数的多维数组 强制类型转换相关概念 可变参数相关问题

malloc()、calloc()、realloc()

在程序退出main()函数之后,还有可能执行一部分代码吗? 总线错误和段错误相关概念

数字和字符串之间转换相关的函数

************************************************* 怎样判断一个字符是数字、字母或其它类别的符号? 怎样将数字转换为字符串? 怎样将字符串转换为数字?

字符串以及内存操作相关函数

************************************************* 字符串拷贝和内存拷贝函数: strcpy strncpy memcpy memmove memccpy bcopy

C和指针_C专家编程_C陷阱与缺陷_C语言编程要点__总结

字符串和内存数据比较函数: strcmp

strcasecmp strncasecmp memcmp strcoll bcmp

连接字符串的函数: strcat strncat

查找字符/字符串的函数: strstr strchr strrchr memchr

其它相关的函数: index rindex strlen strdup memset bzero strspn strcspn strpbrk strtok

数据结构及算法相关函数 qsort() bsearch()

lsearch(线性搜索) lfind(线性搜索)

srand(设置随机数种子) rand(产生随机数)

OTHER

************************************************* 什么是标准预定义宏?

断言 assert(表达式) 相关概念

连接运算符“##”和字符串化运算符"#"有什么作用? 注释掉一段代码的方法 Typedef相关概念 = 不同于 ==

词法分析中的“贪心法” 运算符的优先级问题

C和指针_C专家编程_C陷阱与缺陷_C语言编程要点__总结

变量的存储类型及初始化相关概念 左值和右值相关的概念 变量的值和类型相关的概念 怎样删去字符串尾部的空格? 怎样删去字符串头部的空格? 怎样打印字符串的一部分? 结构的自引用 结构的存储分配

边界计算与不对称边界 整数溢出

返回整数的getchar函数 更新顺序文件 随机数的相关概念

用递归和迭代两种办法解fibonacci

字符与字符串的区别(c缺陷与陷阱1.5

节)

C和指针_C专家编程_C陷阱与缺陷_C语言编程要点__总结

#include <stdio.h> int main() {

char ch = 'abcdefghijklmnopqrstuvwxyz'; char str[] = "abcdefghijklmnopqrstuvwxyz"; printf("-----%c-----\n%s\n",ch, str );

return 0; }

编译该程序可以通过,但是会产生警告;输出结过为: -----z-----

abcdefghijklmnopqrstuvwxyz

// 在Dev-C++ 4.9.9.2编译环境中可以通过,但是在VC6.0中通不过

指针与数组1(c缺陷与陷阱3.1节)

c语言中的数组值得注意的地方有以下两点: 1、c语言中只有一维数组,而且数组的大小必须在编译期间就作为一个常数确定下来(C99标准允许变长数组,GCC编译器中实现了变长数组)。然而,c语言中数组的元素可以是任何类型的对象,当然也可以是另外一个数组。这样,要仿真出一个多维数组就不是一件难事。

2、对于一个数组,我们只能够做两件事:确定该数组的大小,以及获得指向该数组下标为0的元素的指针。其他有关数组的操作,哪怕它们乍看上去是以数组下标进行运算的,实际上都是通过指针进行的。换句话说,任何一个数组下标运算都等同于一个对应的指针运算,因此我们完全可以依据指针行为定义数组下标的行为。

现在考虑下面的例子:

int i; int *p;

int calendar[12][31];

上面声明的calendar是一个数组,该数组拥有12个数组类型的元素,其中的每个元素都是一个拥有31个整型元素的数组。因此,sizeof(calendar)的值是:31×12×sizeof(int)。

考虑一下,calendar[4]的含义是什么?因为calender是一个有着12个数组类型元素的数组,它的每个数组类型元素又是一个有着31个整型元素的数组,所以calendar[4]是calendar数组的第5个元素,是calendar数组中12个有着31个整型元素的数组之一。因此,calendar[4]的行为也表现为一个有着31个整型元素的数组的行为。例如,sizeof(calendar[4])的结果是:31×sizeof(int)。

C和指针_C专家编程_C陷阱与缺陷_C语言编程要点__总结< …… 此处隐藏:6144字,全部文档内容请下载后查看。喜欢就下载吧 ……

C和指针_C专家编程_C陷阱与缺陷_C语言编程要点__总结.doc 将本文的Word文档下载到电脑

    精彩图片

    热门精选

    大家正在看

    × 游客快捷下载通道(下载后可以自由复制和排版)

    限时特价:4.9 元/份 原价:20元

    支付方式:

    开通VIP包月会员 特价:19元/月

    注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
    微信:fanwen365 QQ:370150219