`

c基础

    博客分类:
  • c
阅读更多
1.float值参与计算,结果为double
2.int/int 结果还是int 小数点后舍去
3.‘a’占一个字节 “a”占两个字节
4.实型常数不分单双精度,都按双精度double处理
5.逗号表达式的值为最后一个表达式
6.char是用数值型存储的 char一个字节 数值型最少2个字节 将char赋值为int时高8位补零 将int赋值为char时高8位丢失
7.自动类型转换是由编译系统完成的 顺序为char、short->int->unsigned->long->double->
8.位与& 位或| 位反~ 位异或^ 位左移<< 位右移>>
9.单目 三目 赋值运算符为右结合性 其它为左结合性
10. char 1字节,int 2字节,short 2字节,long 4字节,unsigned int 2字节,unsigned long 4字节,float 4字节,double 8 字节
11.常量后缀 L l 长整型  、U u 无符号数 、F f 单精度实型/单精度浮点型
12.在变量赋初值时不允许 int a=b=c=5; 必须要 int a=5,b=5,c=5;
13.复合语句外不加分号。 {int a=5;int b=a;}
14.C语言有9种控制语句,选择if else,switch;循环语句while,do while,for;转向语句:return,break,go to,continue。
15.Turbo C格式字符串一般形式【标志(+、-、空格、#)】【输出最小宽度(十进制整数,长度超出时原样输出、长度不够时补够)】【。精度(十进制整数,精度超出时舍去)】【长度(h:按短整型输出,l:按长整型输出)】类型(d,o,x X,u,f,e E,g G,c,s)
16.printf("格式控制字符串","输出表列") 注意 输出表列的求值顺序为从右到左,输出顺序还是从左到右
17.scanf("格式控制字符串","地址表列")%【*(表示该输入项输入后不赋予相应变量)】【输入数据宽度】【长度】类型(d,o,x ,u,f,e ,c,s)
18.在输入多个数值数据时,若格式控制串中没有非格式字符作输入数据之间的间隔则可用空格、tab、回车作间隔。C编译在碰到空格、tab、回车、非法数据(如对%d12A时,A即为非法数据)时即认为该数据结束。
19.在输入字符数据时,若格式控制串中无非格式字符,则认为所有输入字符均为有效字符。如scanf(“%c%c%c”,&a,&b,&c);输入d空格e空格f,则把d赋予a,空格赋予b,e赋予c。
20.如果格式控制串中有非格式字符则输入时也要输入该非格式字符。
21.如果输入数据和输出格式不一致时,虽然编译器能通过,但结果将不正确。
22.关系运算符:优先级低于算术运算符 左结合性 <、<=、>、>= 优先级相同 并且 高于 ==和!=
23.逻辑运算符 && || 左结合性,  !右结合性,优先级顺序 !>算术运算符>关系运算符>逻辑运算符(&&和||)>赋值运算符
  ! > 算术运算符 > 位运算符(<<、>>) > 关系运算符 > 位运算符(&、^、|) >逻辑运算符(&&和||)>赋值运算符
24.条件运算符优先级低于关系运算符和算术运算符,但高于赋值符。结合性为从右往左。
25.switch语句case后要用break语句跳出,case和default顺序可以互换,case后多条语句可以不用{}括起来。
26.break 常用在for 、while 、do while循环语句中,可使程序终止循环而执行循环后面的语句。常与if条件连用,跳出循环。
27.continue 常用在for 、while 、do while循环语句中,可使程序跳过循环体中剩余的语句而强行执行下一次循环。常与if条件连用,加速循环。
28.数组的定义 int a[10];方括号中不能使用变量,只能是常量或常量表达式。
29.char c[10] = {'c','','p','r','o','g','r','a','m'}; char c[] = {"c program"}; char c[] = "c program";后两种比第一种多占一个字节‘\0’
30.字符数组输出char c[] = "basic\nbase"; printf("%s\n",c);
31.字符数组输入char c[15];scanf("%s",c);注意输入时遇到空格则视为结束,即如果输入this is a book 则只把this赋给字符数组c
32.C字符串处理函数,大致分为输入、输出、合并、修改、比较、转换、复制、搜索,其中输入输出的包含“stdio.h”,其他则包含“string.h”
   字符串输出函数 puts(字符数组名) 需要格式化输出时可用printf
   字符串输入函数 gets(字符数组名) 不以空格作为结束,只以回车作为结束
   字符串连接函数 strcat(字符数组名1,字符数组名2)
   字符串拷贝函数 strcpy(字符数组名1,字符数组名2)
   字符串比较函数 strcmp(字符数组名1,字符数组名2)
   字符串长度函数 strlen(字符数组名)
33.C语言不允许嵌套定义函数。一个C源程序有且仅有一个main函数。main函数不能被其他函数调用。
34.C语言函数:函数定义 函数说明int a(int a1);

35.如函数类值为int,在函数定义时可以省略类型说明。如需进行函数说明,则说明时不可省略
36.函数调用中应注意求值顺序的问题,即对实参表中的各量是自左至右还是自右至左求值。
37.以下情况可以省略主调函数中对被调函数的函数说明
  1.被调函数的返回值是整型或者字符型
  2.被调函数的定义是在主调函数之前
  3.在主调函数外已经预先说明了各个函数的类型
38.用数组名 和用 数组元素作实参的几点不同
  1.用数组元素作实参是单向值传递
  2.用数组名作实参实质上是传递了数组的首地址,这时实参和形参同时指向同一个数组元素,此时形参的值变化也会引起实参的值变化。其实也是值传递,只是传递的值是地址,实际上形参数组并不存在,系统不会为形参数组分配内存
39.用数组名作为函数参数时 形参和实参数组的类型必须一致,但是长度可以不同,因为在调用时只传送首地址而不检查形参数组的长度。
40.局部变量和全局变量 局部变量是在函数内声明的变量 全局变量是在函数外声明的变量 全局变量如果定义在函数之后,在函数中使用时也需要作变量说明。全局变量的说明符:extern。
41.变量的存储类别 动态存储和静态存储 动态存储的变量一般为形参和auto变量
   auto自动变量 存储在动态存储区 在函数调用时动态分配内存空间 函数结束时释放 函数每调用一次就初始化赋值一次,如果没有赋初值系统默认为不确定的值
   static静态局部变量(注意是局部变量)存储在静态存储区 在程序运行期间都不释放 在编译时赋初值 如果没有赋初值系统默认为0
   register寄存器变量  只有auto和形参能声明为寄存器变量 不能任意多的声明寄存器变量
42.#预处理命令 :宏定义命令#define 、包含命令#include、 条件编译等预处理是在编译的第一遍扫描之前进行,
43.无参宏定义命令#define 标识符 字符串
    1、只是简单替换,预处理程序不作任何检查,如有错误,仅能在对已展开宏的源程序的编译过程中发现。
    2、末尾不加分号,如加分号则一起被替换。
  3、宏作用域的终止 #undef 标识符
  4、习惯用大写字母标识宏,但是允许用小写字母。
  5、可用宏表示数据类型 在用宏表示数据类型时注意和typedef的区别
    宏只是简单的替换 是在预处理阶段完成的
    typedef是在编译时完成的 不是简单的替换 而是对类型说明符的重命名 此时被命名的标识符具有类型定义说明的功能
44.带参宏定义命令 #define 标识符(形参表) 字符串   调用命令 宏名(实参表);
  1、宏名和形参表之间不能有空格,否则视为无参宏
  2、宏调用与函数调用的区别 函数调用实参和形参是两个不同的量,各有各的作用域,函数调用时为实参到形参的值传递
    宏调用则是简单的符号代换 形参不分配内存空间 不需要进行类型定义
  3、宏定义式 要在参数两侧加括号 也应该在整个字符串外加括号
  4、可用来定义多个语句。
  5、注意同一表达式用宏处理和用函数处理的区别
  6、宏定义时的形参是标识符 宏调用时的实参可以是表达式
45.文件包含命令 #include “stdio.h”先在当前源文件目录中查找,如果找不到,再在包含目录中查找 或者 #include <“stdio.h>在包含文件目录中查找
46.条件编译
  1、#ifdef 标识符 程序段1 #else 程序段2 #endif
  2、#ifndef 标识符 程序段1 #else 程序段2 #endif
  3、#if 常量表达式 程序段1 #else 程序段2 #endif
47.指针 和 指针变量 指针是指地址 是常量;指针变量是指取值为地址的变量
48.指针变量的定义 类型说明符 *变量名
49.指针变量的引用 初始化:int a;int *p = &a; 赋值int a;int *p;p = &a;
50.int i,j,*p,*q; i = 1;j = 2; p = &i; p = &j; 注意 p = q; *p = *q;的区别
51.指针变量的运算
  5.1.1赋值运算
     初始化赋值 int a,*p = &a;
     把一个变量的地址赋予指向相同数据类型的指针变量 int a,*p;p = &a;
     把一个指针变量赋予指向相同数据类型的指针变量 int a,*pa = &a,*pb;pb = pa;
     数组首地址赋予指针变量 int a[5],*p;p = a;或者 p = &a[0];
     字符串首地址赋予指针变量 char *p = “this is a book”;
     函数的首地址赋予指针变量 int (*p)() = f;--f是函数名
  5.1.2指针变量和整型的算术加减操作(只对数组指针变量)向前向后移动
       指针变量和指针变量的减操作(只对指向同一数组指针变量)
  5.1.3>、<、==关系操作(只对同一数组指针变量)
52.int *p = 0;p为空指针
53.a = &a[0]
54.P166
55.要注意指针变量的当前值
56.*p++等价于*(p++)注意和(*p)++的区别 因为* 和 ++ 的优先级相同,且右结合
57.数组名作为函数参数 数组名就是数组的首地址,实参向形参传递数组名实际上就是传递数组的首地址,此时形参和实参指向同一个数组。
   数组指针变量作为函数参数的用法一致。
58.二维数组
int a[3][4] = {0,1,2,3,4,5,6,7,8,9,10,11};
   printf("%d\n",a);   /*-82 */
   printf("%d\n",*a);  /*-82*/
   printf("%d\n",a[0]); /*-82*/
   printf("%d\n",&a[0]);   /*-82*/
   printf("%d\n",&a[0][0]); /*-82*/

   printf("%d\n",a+1);   /*-74*/
   printf("%d\n",*(a+1));  /*-74*/
   printf("%d\n",a[1]);   /*-74*/
   printf("%d\n",&a[1]);  /*-74*/
   printf("%d\n",&a[1][0]);/*-74*/

   printf("%d\n",a+2);       /*-66*/
   printf("%d\n",*(a+2));    /*-66*/
   printf("%d\n",a[2]);      /*-66*/
   printf("%d\n",&a[2]);     /*-66*/
   printf("%d\n",&a[2][0]);  /*-66*/

   printf("%d\n",a[1]+1);    /*-72*/
   printf("%d\n",*(a+1)+1);  /*-72*/
   printf("%d\n",*(a[1]+1));  /*5*/
   printf("%d\n",*(*(a+1)+1));/*5*/
  
59.指向二维数组的指针变量定义:类型说明符 (*指针变量名)[长度]
60.函数指针变量-指向函数的指针变量 定义: 类型说明符 (*指针变量名)() 调用:(*指针变量名)(实参表);
61.指针形函数-函数的返回值为指针 定义:类型说明符 *函数名(形参表) 调用 函数名(实参表);
62.指向指针的指针 定义:char **p;
63.结构指针变量 定义 struct 结构名 *结构指针变量; struct stu *pstu; pstu= &boy1;
   结构指针变量成员访问: (*结构指针变量).成员名;(注意一定要用括号括起来,.的优先级要比*高)

                                或者  结构指针变量->成员名;
64.链表 malloc : struct stu {int num;char[] name;} *stus; stus = (struct stu*)malloc(sizeof(struct stu));

            sizeof  :sizeof(struct stu);

            free :free(stus);

            calloc :struct stu {int num;char[] name;} *stus; stus = (struct stu*)calloc (2,sizeof(struct stu));
65.枚举 定义:enum 枚举名{枚举值表};enum weekday {sun,mon,。。。。sat}; enum weekday a,b,c;
   赋值:1、不能对枚举的元素再赋值 即 sun = 5;是错误的
             2、枚举元素本身由系统定义了一个表示序号的数值sun的值为0,mon的值为1。。。。。。
                 只能把枚举值赋予枚举变量,而不能把枚举元素的数值直接赋予枚举变量。
                 如果一定要把枚举元素的数值赋予枚举变量,可以使用强制类型转换 a = (enum weekday)1;
66.类型定义符 typedef
67.位运算符 &(按位与)、 |(按位或)、^(按位异或)、 ~(按位取反)、 <<(左移)、 >>(右移)
68.位域(位段) struct bs {int a : 8 ; int b : 2 ; int c : 6 ;};
    1、一个位域必须存储在同一个字节中
    2、空域(无位域名)占位 : 0  表示从下一字节开始存放
    3、位域在本质上就是一种结构类型,不过其成员是按二进位分配的。
69.文件
   分类:普通文件、设备文件;文本文件(ASCII)、二进制文件(二者均为流式文件)
   文件指针:FILE *指针变量标识符; FILE *fp;
   文件的打开和关闭:fopen(文件名,使用文件方式);返回指向文件的指针,如果打开失败则返回NULL

            fclose(文件指针);返回0为正常关闭。
                     使用文件方式参见P215
   文件读写:
             stdout为标准输出
             字符读写函数       字符变量 = fgetc(文件指针);

                                                    字符读写函数(字符为单位):返回值为字符,文件以EOF为结束标志
                                        fputc(字符量,文件指针);

                                                   写入成功则返回写入字符,失败则返回EOF
             字符串读写函数    fgets(字符数组名,n,文件指针);

                                                   返回值为字符数组首地址,在读出n-1个字符之前,遇到EOF或者换行则结束读出
                                        fputs(字符串,文件指针);

                                                  字符串可以是字符串常量、字符数组名、指针
             数据块读写函数    fread(buffer,size,count,fp);

               buffer为指针
                                        fwrite(buffer,size,count,fp);
             格式化读写函数    fscanf(文件指针,格式字符串,输入表列);
                                        fprintf(文件指针,格式字符串,输出表列);
  文件定位:
        rewind(文件指针); 使文件内部位置指针移到文件头
        fseek(文件指针,位移量 ,起始点);位移量要为Long型,常数时要带L后缀(一般用于二进制文件中,文本文件要进行转换)
        feof(文件指针);判断文件是否处于文件结束位置
        ferror(文件指针);判断文件在各种读写操作中是否出错,未出错返回0
        clearerr(文件指针)
70.一个C语言源程序由多个文件组成,一个文件由多个函数组成。
71.%(求余)两边必须都为int型
72.getchar() getch() putchar()--字符 gets() puts();--字符串
73.数值数组不能用赋值语句整体赋值、输入、输出,必须用循环语句逐个对数组元素进行操作
   scanf向数组输入字符串时遇到空格视为结束标志、gets向数组输入字符串时可以带空格

74.函数值为整型或者字符型,则函数调用时可以省去类型说明,此时函数值统一按整型处理
75.符号常量 #define P 10
76.条件运算符和赋值运算符结合性都是自右向左
77.标号和goto语句必须处于同一函数,但可以处于不同的循环层。
78.sizeof(数组则为数组定义的长度、字符串指针则为指针实际有效字符长度+1带\0)

    strlen(实际有效字符长度、不带\0)

79.(*p).x 必须括号括起来 因为 .的优先级要高于*
分享到:
评论

相关推荐

    C语言基础(全).pdf

    C语言基础 C语言是一种工业语言,广泛应用于操作系统、嵌入式系统、驱动程序、图形引擎、图像处理、声音效果等领域。学习C语言可以提高开发效率和开发乐趣,但是在日常应用中很少直接使用C语言,学习C语言主要是...

    C基础讲义2018修订版1

    本讲义将深入浅出地介绍C语言的基础知识,帮助初学者轻松掌握这一核心技能。 1. C语言概述 C语言起源于1972年,由Dennis Ritchie在贝尔实验室为UNIX操作系统开发。它是一种结构化编程语言,以其简洁的语法和高效的...

    WINCC C语言基础培训教程.pdf

    文件内容涉及到编程语言C在WINCC(Windows Control Center,一个工业自动化软件)中的应用,尤其是C语言基础在WINCC中的应用。考虑到内容中出现的ocr扫描错误,我们将尽量还原并理顺这些信息,并以中文详细阐述。 ...

    C语言基础课件 ppt

    《C语言基础课件》是针对初学者及计算机考级者设计的一套全面而详细的教程,旨在帮助读者从零开始掌握C语言的基础知识。这套课件由清华大学出版社出版,其内容涵盖C语言的核心概念和常见编程技巧。通过PPT的形式,...

    c语言基础知识.pdf

    ### C语言基础知识详解 #### 一、C语言概论及发展历程 C语言作为一种重要的编程语言,在计算机科学领域占据着举足轻重的地位。它最早出现于20世纪70年代初期,由美国电话电报公司(AT&T)的贝尔实验室开发。1978年...

    C语言基础教程.pdf

    C语言基础教程.pdf 本资源详细介绍了C语言的基础知识,包括C语言的产生与发展、特点、Turbo C语言概述等内容。 1. C语言的产生与发展 C语言是由美国的Dennis Ritchie设计发明的,于1972年首次在UNIX操作系统的DEC...

    C语言基础知识大全

    《C语言基础知识大全》这份文档深入浅出地介绍了C语言的核心概念与编程技巧,是学习C语言不可或缺的宝典。以下是从标题、描述、标签以及部分内容中提炼的关键知识点,旨在帮助初学者快速掌握C语言的基本原理与应用。...

    c语言基础课程课件.ppt

    总的来说,这份C语言基础课程课件将为你提供坚实的编程基础,帮助你熟练掌握指针和结构体的运用,从而能够编写出高效、灵活的C程序。在学习过程中,要不断练习,多思考,遇到问题时勇于求解,你的C语言技能将会逐步...

    C语言基础 谭浩强.pdf

    ### C语言基础精要知识点概览 #### 1. C语言的发展历程与地位 C语言起源于1970年代初期,由美国电话电报公司(AT&T)贝尔实验室的Dennis Ritchie创造,旨在为UNIX操作系统开发一个高效且灵活的编程工具。1978年,...

    c语言基础教程电子书

    以下是对"c语言基础教程电子书"中各章节内容的详细解释: 第一章:C语言概论 在这一章中,你会了解到C语言的历史背景,它由Dennis Ritchie在贝尔实验室为UNIX操作系统开发。C语言的特点包括直接对硬件的访问能力、...

    C语言基础 C语言基础 C语言基础 C语言基础

    c语言基础

    C语言基础教程(全)

    ### C语言基础教程知识点概述 #### 一、C语言的发展历程与特点 1. **C语言的历史背景**:C语言最初由Dennis Ritchie在1972年为Unix操作系统开发,基于BCPL(Basic Combined Programming Language)进行改进。1970...

    c语言基础教程,txt版

    ### C语言基础教程知识点概述 #### 一、C语言的重要性及学习动机 1. **C语言在编程领域中的地位**: - C语言是许多程序员入门的第一门语言。 - 对于想要从事底层编程的人来说,掌握C语言几乎是必备条件。 - 不...

    C语言基础知识复习资料

    "C语言基础知识复习资料" 本资源摘要信息涵盖了C语言的基础知识,包括变量、数据类型、运算符、控制结构、函数、数组、指针等方面。通过学习和掌握这些知识点,可以帮助读者更好地理解和应用C语言。 变量和数据...

    经典C语言基础(谭浩强版清晰版).pdf

    《经典C语言基础》这本书由谭浩强编写,是一本广泛使用的C语言入门教材,适合初学者和有一定编程基础的学习者。以下是从该书标题、描述、标签和部分内容中提炼出的关键知识点: ### C语言发展过程与特点 C语言自...

    c语言基础c语言基础c语言基础

    c语言基础

    C语言讲义C基础C++基础

    一、C语言基础 1. 数据类型:C语言提供了多种基本数据类型,如整型(int)、浮点型(float、double)、字符型(char)等,以及复合数据类型如结构体(struct)、联合体(union)和枚举(enum)。理解这些数据类型...

Global site tag (gtag.js) - Google Analytics