C语言概述,数据类型、长度、输入输出、运算符、基本控制语句
课堂笔记总结
概述
- 丹尼斯·里奇,C语言之父,UNIX之父
- C语言主要特点:可以直接访问硬件(因为它有指针类型,可以对地址操作),运行效率(运行时,解释性),移植性好。
- 作业1:C语言语法标准:详解 K&RC C89 C99 C11
- K&R C主要介绍了以下特色:结构(struct)类型、长整数(long int)类型、无符号整数(unsigned int)类型、把运算符=+和=-改为+=和-=。
- 这个版本的语言经常被称作”ANSI C”,或有时称为”C89”。 传统C语言到ANSI/ISO标准C语言的改进包括:增加了真正的标准库、新的预处理命令与特性,函数原型允许在函数申明中指定参数类型,一些新的关键字,包括 const、volatile 与 signed 宽字符、宽字符串与字节多字符。
- C99新增了一些特性,如:支持不定长的数组,即数组长度可以在运行时决定。变量声明不必放在语句块的开头,for 语句提倡写成 for(int i=0;i<100;++i) 的形式,即i 只在 for 语句块内部有效。初始化结构的时候允许对特定的元素赋值。允许编译器化简非常数的表达式。取消了函数返回类型默认为 int 的规定。
- 在2011年12月,ANSI 采纳了 ISO/IEC 9899:2011 标准。这个标准通常即C11,它是C程序语言的最新标准。
数据类型
1.右左法则:
确定a是一个变量,就要确定该变量保存什么类型的数据,保存什么类型的数据,它就是什么变量;
确定a是一个指针变量,就要确定该指针变量保存什么什么类型的地址,保存什么类型的地址,它就是什么类型的指针变量。
确定a是一个数组,就要确定数组里的元素是什么类型的,元素是什么类型,它就是什么数组。
确定a是一个函数,就要确定函数的形参和返回值。
例:
float (*( * b( ))[ ] )( );
① b函数,形参为空 返回值为数组指针,指向一个函数指针数组,该数组里每个元素是返回值为浮点型 形参为空的函数
Void *( *c)( char a,int ( *b)( ) );
② 函数指针变量,指向一个函数返回值为void *,此函数的两个形参分别为一个字符类型,一个形参为空 返回值为整形的指针
Float( *( * e[10])( int &) )[5]
③ 函数指针数组,指向有一个地址形参 返回值为指针类型的函数,返回值为5个浮点类型元素的数组
2. 数据长度
基本类型字节长度:
int | char | short | long | float | double |
---|---|---|---|---|---|
4 | 1 | 2 | 8 | 4 | 8 |
各种数据类型的指针的字节长度
(固定的8,因为保存地址,地址在操作系统中是固定长度;32位系统是4个字节)
int * | char * | short * | long * | float * | double * |
---|---|---|---|---|---|
8 | 8 | 8 | 8 | 8 | 8 |
sizeof是运算符不是函数,计算数据类型或者变量所占内存空间的大小。
strlen是字符串库函数,统计当前字符串中的字符个数,不统计\0 , sizeof 统计\0
3. 输入输出
printf 行缓冲 满一行才输出
scanf 行缓冲 与printf用同一个缓冲
格式化输入scanf(“kgf%d”,&num);那么输入时就要输kgf10
Getchar 可用于接受多余字符
putchar
gets 输入字符串
puts
代码
结果
4. 运算符、基本控制语句
-
i++ int i=2,func(++I,i++)
-
While for 已知次数用for 未知用while
-
If switch case
switch(op)
{
case ‘+’:
{
break;
}
default:
} -
Break continue
-
Goto
-
代码练习 : 统计字符串中最长的数字子串长度