1.操作符优先级
指针:若*p为1,想让其值加一,应写为(*p)++,而不是*p++。因为++的优先级高于*(指针),若写为*p++,++会优先作用于p。所以让*p加一应为(*p)++。
2.函数返回类型
C语言中,函数的返回类型不写的时候,默认返回int类型,如printf("hehe\n")。在printf函数中\0也算一个字符。
3.printf函数返回值
C语言中,printf函数返回值是打印在屏幕上的字符的个数,如下图。
三个printf函数由内到外,第一个printf函数中打印的是43为2个字符,所以返回给第二个printf函数的值为2;而第二个printf函数中打印的是2为1个字符,所以返回给第1个printf函数的值为1。所以打印的最终结果为:43 2 1。
4.函数头文件、函数的定义、主函数
函数头文件放在工程头文件文件夹的.h文件中;函数的实现放在独立于主程序之外的源文件中,主函数也单独放。主程序引用外部文件程序中的函数用extern的方式。如下图
5.函数的定义和声明
函数必须先声明后使用
C语言中,如int val有定义时,变量才叫做声明;但若无定义时,int val叫做定义。
6.栈溢出(stack overflow)
函数调用特别是递归函数调用太深容易栈溢出(stack overflow)。
内存分为栈区堆区和静态区;
栈溢出:每调用一次函数时,计算机都会为本次函数在内存的栈区上开辟一块内存空间,当栈区内存耗干的时候就叫做栈溢出。如下图
7.指针变量和整形加常量
在指针字符中指针字符加一表示向后跳一个字符,如下图;
而整形指针加一表示向后跳一个整形,也就是4个字节。