1.feof
2.strncat
3.c和指针--数组
多维数组的第一维指向的是一个数组
数组名的值是一个指针常量。取一个数组名的地址所产生的是一个指向数组的指针(值还是第一个元素的地址,但是步长变成了一整个数组,因为他是一个指向数组的指针),而不是指向某个指针常量值的指针。
间接访问和下标引用完全相同,除了优先级(下标引用>间接访问)。
2[array] = array[2] 惊呆了!!!
int *p[10] 这是指针数组,首先p结合[]他是个数组,然后对这个数组每个元素是个指向int的指针。
int (*p)[10] 这是指向数组的指针,首先结合(*p),这个指针指向一个数组int [10]。
4.const a = 10;
a = 9
5.队列,栈空间
6.信号量回调函数
7.strncpy带不带\0
8.if else匹配
9.unsigned long long -1u
10.结构体中的bit
11.单多循环链表实现队列
12.c和指针--数据类型
八进制前面是0(那和普通的前面带0得十进制数有什么区别)
局部变量与形参同名时用局部变量。
链接属性包括external(外部)、internal(内部)、none(无),以源文件为基本单位。
静态变量再程序执行期间一直存在。静态函数只在定义源文件中可见。
在堆栈上分配存储可以有效的实现递归。
13. c和指针-字符串
strbcpy除非strlen(src)<len,否则不会自动加NULL。
但是strncat就是会向目标字符串赋值n个字符然后加个NULL,不管目的空间够不够。
strchr/strrchr 查找字符串中字符第一次/最后一次出现的位置
strstr(s1, s2)如果s2 == NULL,返回s1.
strtok 第一次传一个正常的字符串,第二次传NULL就会从上次保存的位置继续往下查找。
strerror 返回描述错误的字符串的指针
isdigit:0-9、isxdigit;a-f或A-F、islower、isupper、isalpha:大小写字母、isalnum:数字或字母、ispunct:除了数字和字母。
tolower、toupper。
内存操作(不受字符串的NULL限制):
memcpy和strncpy不同的是遇到NULL不会停止。