C语言查漏补缺
1、数组初始化时,例如char arr[5] = "abcde"
,因为字符串中有6个字符,即末尾还有个结束符,但是数组容量为5,所以仅接纳5个字符,末尾的结束符不会被接纳,故而这样的字符数组在直接输出时可能会发生乱码,因为没有结束符。
2、gets
函数类似于scanf
函数,用于读取标准输人。前面我们已经知道scanf
函数在读取字符串时遇到空白字符就认为读取结束,所以当输入的字符串存在空格时,我们需要使用gets
函数进行读取,因为gets
在读取标准输入缓冲区内容时,只会在遇到换行符'\n'
才会停止读取。
3、scanf
和gets
都具有自动在读取到的字符串末尾追加'\0'
的功能。
4、gets
和puts
是专门针对字符串的函数,他们两个的参数只有也只能是字符指针。
5、c
是字符指针,puts(c)
等价于printf("%s\n",c)
,会自动于字符串末尾加上换行符。
6、指针变量本身的大小取决于操作系统的位数,因为操作系统的位数就是这个操作系统中内存地址上限的位数,而指针变量就是存放内存地址,所以指针变量本身的容纳范围就是内存地址上限位数。
7、&
的作用是获得变量对应的指针变量,而非获得地址常量,也就是说&
获得的东西具有对应变量的量级和起始地址两样属性,故而可以这样使用:*&a
。
8、*
在作用于指针变量时,会根据指针变量的类型,也就是它的量级,来限定自己在内存中的读取范围,例如如果是整形指针,那么就会读取从首地址开始往后4字节
的内存空间中的内容。
9、字符串“字符串内容\0”
的双引号""
会返回字符串内容在内存空间中的首地址。