C语言基础知识点总结

  1. 1<=x<10只能用(1<=x&&x<10)表示,例如if(1<=x&&x<10)
  2. 1=>a表示错误,1>=a表示正确。无论大于等于还是小于等于,等号总在右边。
  3. 在C语言中各种类型数据所占字节数: char  1字节,short int  2字节,float  4字节,double  8字节,long long 8字节,int  2字节(16位)或者4字节(32/64位)
  4. %12d,前面空11格。
  5. i++  :先引用后增加                   ++i  :先增加后引用
  6. puts(a),按顺序输出完成后会加一个换行符
  7. 0和1不是素数
  8. char a[100];   ……..          a[i]=a[i]+1;相当于把a[i]变成a[i]下面的一个字符
  9. gets[],puts[] 只适用于字符数组char
  10. 如果用指针变量作实参,必须先使指针变量有确定值。
  11. 不同种类型数据混合运算时,其运算结果会自动取大范围的数据类型做为结果的数据类型,比如:整型和浮点型混合运算的结果是 浮点类型!
  12. %o,以八进制数形式输出
  13. 函数的调用可以(而且只可以)得到一个返回值(即函数值),而使用指针变量作参数,可以得到多个变化了的值。
  14. 数组名a代表数组首元素的地址,它是一个指针型常量。既然a是常量,所以a++是无法实现的。
  15. C编译器都是将形参数组名作为指针变量来处理的。如fun(int arr[],int n)与fun(int *arr,int n)是等价的。
  16. 可以对字符指针变量赋值,但不能对数组名赋值。如下正确:char *a;a=”I love China”;
  17. 强制类型转换:sum1=(float)sum;l1=(float)l;把括号后面的变量强制转换成括号内的类型。
  18. 字符串赋值操作不同于单个字符的赋值操作,单个字符赋值:temp=str[i];          字符串赋值:strcpy(temp,str[i]);   
  19. 字符串比较方法不同于单个字符的比较方法,单个字符比较:If(str[j]
  20. c[t++]=s[i]; 即 c[t]=s[i]; t++;
  21. 带参宏调用时不是值传递,而是以实参代换行参。
  22. 为了避免宏代换时发生错误,宏定义中的字符串应加括号,字符串中出现的形式参数两边也应加括号。
  23. 指针变量用来存放地址。
  24. “&”和“*”两个运算符的优先级别相同,但按自右而左方向结合。
  25. 数组名代表的是数组首元素地址。
  26. static的作用:让一个变量长期有效,而不管其是在什么地方被申明。 如:     
  27. int fun1()

              {

                  static int s_value = 0;

                  ....

              }

    那么fun1不管在什么地方被调用,当函数退出后,s_value最后的值将一直会被系统保存(相当于一个全局变量),下次s_value再被用到时,也即当fun1()再次被调用时,s_value初始值将是最近被保存过的值(注意s_value初始化操作只会被执行一次,即上述s_value =0 这个语句)。

  28. 约瑟夫环:C语言基础知识点总结_第1张图片

  29. 共用体与结构体不同的是,结构体变量中的成员各自占有自己的存储空间,而共用体变量是从同一起始地址开始存放成员的值,即所有成员共享同一段内存单元。
  30. typedef int INTEGER;那么,INTEGER相当于int的作用。
  31. ptr->sno等价于(*ptr).sno
  32. C语言基础知识点总结_第2张图片
  33. while(scanf(“%d%d”,&a,&b)!=EOF)输入输出一组之后,还可以继续输入下一组,直到从键盘输入Ctrl+Z后回车,结束程序。即为多组输入输出。
  34. 在换行符可能造成程序错误的情况下,可以使用getchar()来接收换行符。
  35. D://c//doc//file.dat  以上完整路径放在一起为文件名
  36. 编译器ID return报错一般都是函数名称有问题(或者程序运行窗口未关闭)(或者编译器需要重启)。
  37. if(a>b>c),此语句执行方式为:先判断a>b,如果a>b,则a>b代表1,否则代表0,接下来就是进行1>c或者0>c的判断。而不是先判断a>b,再判断b>c (想实现可以用a>b&&b>c)。
  38. 函数定义时涉及的基本要素是:函数名、形式参数、函数体。
  39. 多组输入输出:while(scanf(“%d”,&a)!=EOF)和while(~scanf(“%d”,&a))等价。
  40. func((e1,e2),(e3,e4,e5));该函数有2个实参。
  41. 共用体变量所占内存长度等于里面所占内存最大的那个变量的长度。
  42. .操作符的优先级在++(*p).n这个式子中的优先级是最高的,所以会先计算(*p).n的值。
  43. ->操作符的优先级高于前缀++操作符的优先级,所以在++p->n中会先计算p->n的值。
  44. 函数的递归调用不过是一个函数直接或间接地调用它自身。
  45. else和它最近的一个if关联
  46. 能够编制出功能复杂的程序    不是C语言的特点。
  47. if(a&&b)  逻辑与的意思,就是说if(a==true && b==true),其中,如果a已经是false,则不再计算b.
  48. 3&&4 = ture && true = true = 1.
  49. 在C语言中,二维数组元素在内存中的存放顺序是(按行存放)即在内存中线顺序存放第一行的元素,再存放第二行的元素。
  50. 不能达到交换指针指向地址而交换输出。函数调用的时候,形参是实参的副本。所以在这里交换的指针值只是实参的副本,原来的指针值并没有改变。
  51. gets()的多组输入输出:while(gets(str)!=NULL)
  52. int a[5]={0};数组a元素全部初始化为0.
  53. 若有定义char s1[]=”well”;char s2[]={’w’,’e’,’l’,’l’};  则s1和s2是不同的,虽然这两种字符数组初始化方法都是合法的,但两者产生的字符数组是不同的。因为char s1[]=“well”;中“well”是一个字符串,最后还有一个‘\0’,因此s1中总共有5个元素,而s2[]={‘w’,‘e’,‘l’,‘l’};则决定了s2中只有4个元素。
  54. 标准后缀是.c编译后是.obj连接后是.exe

 

你可能感兴趣的:(C/C++)