C语⾔⼊门这⼀篇就够了-万字长⽂(前半部分)
C语⾔-万字长⽂总结
前⾔
这是我学习c语⾔中进⾏的笔记总结,每⼀节都有我的思想在其中,期待能帮助准备学习c语⾔的⼈⼀些帮助。
⼀、C语⾔-简介
  C是⼀种通⽤的编程语⾔,⼴泛⽤于系统软件与应⽤软件的开发。于1969年⾄1973年间,为了移植与开发UNIX操作系统,由丹尼斯·⾥奇与肯·汤普逊,以B语⾔为基础,在贝尔实验室设计、开发出来。
  C语⾔具有⾼效、灵活、功能丰富、表达⼒强和较⾼的可移植性等特点,在程序员中备受青睐,成为最近25年使⽤最为⼴泛的编程语⾔。⽬前,C语⾔编译器普遍存在于各种不同的操作系统中,例如Microsoft Windows, Mac OS X, Linux, Unix等。C语⾔的设计影响了众多后来的编程语⾔,例如C++、Objective-C、Java、C#等。
  ⼆⼗世纪⼋⼗年代,为了避免各开发⼚商⽤的C语⾔语法产⽣差异,由美国国家标准局为C语⾔订定了
⼀套完整的国际标准语法,称为ANSI C,作为C语⾔的标准。⼆⼗世纪⼋⼗年代⾄今的有关程序开发⼯具,⼀般都⽀持匹配ANSI C的语法。
⼆、C语⾔-程序结构
2.1 程序结构
1、C语⾔的程序构成⽅式
1)c语⾔程序由函数构成,每个函数可以实现⼀个或多个功能。
2)⼀个正规程序可以有多个函数,但是有且只有⼀个主函数。
3)函数只有在被调⽤的时候才执⾏,主函数由系统调⽤执⾏。
4)函数的格式必须按照规范书写。
5)C 语⾔程序⽂件的后缀为 .c
2、C语⾔的程序主要包括:
          1、预处理器指令
          2、函数
          3、变量
          4、语句 & 表达式
          5、注释
以下⾯这个程序为例,其中:
1)#include <stdio.h> 是预处理器指令
2)int main()是主函数,程序从这⾥开始
3)// 后⾯为注释,之间的内容会被编译器忽略
4)printf(…) 是 C 语⾔中的函数,⽤处是在屏幕上显⽰消息。
5)return 0; 终⽌ main() 函数,并返回值 0。
这些东西就是组成⼀个程序的结构。
#include<stdio.h>
int main()
{
//第⼀个C语⾔程序
printf("Hello, World! ");
return0;
}
还是这个程序,我们对其进⾏更加细致的解释:
  ⾸先是#include <stdio.h>,这句话是做什么的呢?
  1、#include 告诉预处理器将指定头⽂件的内容插⼊到预处理器命令的相应位导⼊头⽂件的预编译指令,
  2、<> 表⽰系统⾃带的库,也可以写成" " 表⽰⽤户⾃定义的库,如果写成" "并且⾃定义的库⾥⾯没有这个⽂件系统会⾃动查⾃带的库,如果还是没有就会报错。
  3、int main()是主函数,是程序的⼊⼝,其中因为是int main()所以main() 的返回值是 int 类型,所以是 return 0; 现在 C 标准⾥规定main() 返回值必须为 int,所以必须写成是 int main()。
  4、//⽤于注释说明。
  5、printf() ⽤于格式化输出到屏幕。printf() 函数在 “stdio.h” 头⽂件中声明。当编译器遇到 printf() 函数时,如果没有到stdio.h 头⽂件,会发⽣编译错误。
  6、return 0; 语句⽤于表⽰退出程序。
2.2 ⽆头⽂件-错误解析
  当没有包含头⽂件 #include <stdio.h> 就使⽤ printf 时,会出现下⾯警告:
warning: implicitly declaring library function 'printf' with type'int (const char *, ...)'[-Wimplicit-function-declaration]
这句话提⽰的意思是:⽤类型“int (const char *,…)”隐式声明了库函数printf。
该提⽰的背景知识:因为 printf 这⼀类库函数太常⽤了,所以编译器在编译的时候,发现源⽂件中并没有声明 printf 这个函数就直接使⽤了它,那么编译器就会为 printf 函数隐式⽣成⼀个声明。你那个编译器提⽰你,它为printf⽣成的隐式声明是:int printf(const char *,…)
该提⽰后果:通常情况下,这个提⽰只是⼀个 warning,⽽不是 error,编译仍然可以通过。
解决⽅案:要消除这个提⽰,只要加上 printf 的声明就⾏了。printf 函数是⼀个库函数,它的声明在 stdio.h ⽂件⾥。所以,你只要在源⽂件中 #include <stdio.h> 就可以了。
三、C语⾔-基本语法
C语⾔的程序是由各种令牌组成,令牌可以是关键字、标识符、常量、字符串值、符号等。
3.1 关键字
按年份开始有:
auto  break  case  char  const   continue  default  do   double   else  enum  extern 
float    for  goto   if    int  long  register  return  short  signed   sizeof  static 
struct  switch   typedef  union  unsigned  void  volatile  while
以及部分关键字说明:
关键字描述
auto声明⾃动变量
double声明双精度变量或函数
typedef⽤以给数据类型取别名
register声明寄存器变量
short声明短整型变量或函数
char声明字符型变量或函数
关键字描述
const声明只读变量
static声明静态变量int声明整型变量或函数
struct声明结构体变量或函数
unsigned声明⽆符号类型变量或函数
volatile说明变量在程序执⾏中可被隐含地改变
long声明长整型变量或函数
union声明共⽤数据类型
signed声明有符号类型变量或函数
void声明函数⽆返回值或⽆参数,声明⽆类型指针
float声明浮点型变量或函数
enum声明枚举类型
extern声明变量是在其他⽂件正声明
if条件语句
else条件语句否定分⽀(与 if 连⽤)
switch⽤于开关语句
case开关语句分⽀
for⼀种循环语句do循环语句的循环体
while循环语句的循环条件
goto⽆条件跳转语句
continue结束当前循环,开始下⼀轮循环
break跳出当前循环
default开关语句中的"其他"分⽀
sizeof计算数据类型长度
return⼦程序返回语句(可以带参数,也可不带参数)循环条件
3.2 标识符
  C语⾔中的标识符是⽤来标识变量、函数,或任何其他⽤户⾃定义项⽬的名称。⼀个标识符以字母 A到Z 或 a到z 或下划线 _ 开始,后跟零个或多个字母、下划线和数字(0-9)。
  C 标识符内不允许出现标点字符,⽐如 @、$ 和 %。下⾯列出⼏个有效的标识符:
hello  hello_1  hello_world
  重申⼀下C语⾔中标识符的命名规范:
  1.标识符由字母、数字、下划线组成,并且⾸字母不能是数字。
  2.不能把C中的关键字作为⽤户的标识符,例如:int、if\for、while等。(注:标识符不能和C语⾔的关键字相同,也不能和⽤户⾃定义的函数或C语⾔库函数同名)
  3.标识符长度是由机器上的编译系统决定的,⼀般的限制为8字符,(注:8字符长度限制是C89标准,C99标准已经扩充长度,其实⼤部分⼯业标准都更长)。
  4.标识符对⼤⼩写敏感,即严格区分⼤⼩写。⼀般对变量名⽤⼩写,符号常量命名⽤⼤写。(注:C语⾔中字母是区分⼤⼩写的,因此score、Score、SCORE分别代表三个不同的标识符)
  5.标识符命名应做到"见名知意",例如,长度(外语:length),求和、总计(外语:sum),圆周率(外语:pi)
3.3 注释
C 语⾔有两种注释⽅式:单⾏注释和多⾏注释
以 // 开始的单⾏注释,这种注释可以单独占⼀⾏。
/* 单⾏注释 */
/*
多⾏注释
多⾏注释
多⾏注释
*/
/* */ 这种格式的注释可以单⾏或多⾏。
  这⾥需要注意的是:不能在注释内嵌套注释,注释也不能出现在字符串或字符值中。
四、C语⾔-数据类型
  C 中的类型可分为:
  1.基本类型:整数类型和浮点类型,属于算术类型。
  2.枚举类型:被⽤来定义在程序中只能赋予其⼀定的离散整数值的变量,属于算术类型。
c语言编程入门指南pdf  3.void 类型:类型说明符 void 表明没有可⽤的值。
  4.派⽣类型:指针类型、数组类型、结构类型、共⽤体类型和函数类型。
  数组类型和结构类型统称为聚合类型。函数的类型指的是函数返回值的类型。
4.1 整数类型
类型存储⼤⼩值范围
char  1 字节-128 到 127 或 0 到 255
unsigned char  1 字节0 到 255
signed char  1 字节-128 到 127
int  2 或 4 字节-32,768 到 32,767 或 -2,147,483,648 到 2,147,483,647
unsigned int  2 或 4 字节0 到 65,535 或 0 到 4,294,967,295
short  2 字节-32,768 到 32,767
unsigned short  2 字节0 到 65,535
long  4 字节-2,147,483,648 到 2,147,483,647
unsigned long  4 字节0 到 4,294,967,295
Note:各种类型的存储⼤⼩与系统位数有关,但⽬前通⽤的以64位系统为主。
4.2 浮点类型
类型存储⼤⼩值范围精度
float  4 字节  1.2E-38 到 3.4E+38  6 位有效位
double8 字节  2.3E-308 到 1.7E+30815 位有效位
long double16 字节  3.4E-4932 到 1.1E+493219 位有效位
4.3 void 类型
类型与描述
1函数返回为空 ,C 中有各种函数都不返回值,或者您可以说它们返回空。不返回值的函数的返回类型为空。例如 void exit (int status);
2函数参数为空,C 中有各种函数不接受任何参数。不带参数的函数可以接受⼀个 void。例如 int rand(void);
3指针指向 void,类型为 void * 的指针代表对象的地址,⽽不是类型。例如,内存分配函数 void *malloc( size_t size ); 返回指向 void 的指针,可
以转换为任何数据类型。
五、C语⾔-变量
5.1 变量类型
类型描述
char通常是⼀个字节(⼋位), 这是⼀个整数类型。
int整型,4 个字节,取值范围 -2147483648 到 2147483647。
float
单精度浮点值。单精度是这样的格式,1位符号,8位指数,23位⼩
数。
double
双精度浮点值。双精度是1位符号,11位指数,52位⼩
数。
void表⽰类型的缺失。
5.2 变量的定义、声明
  变量定义:⽤于为变量分配存储空间,还可为变量指定初始值。程序中,变量有且仅有⼀个定义。
  变量声明:⽤于向程序表明变量的类型和名字。
  变量的名称可以由字母、数字和下划线字符组成。
变量的声明有两种情况:
  1、⼀种是需要建⽴存储空间的。例如:int a 在声明的时候就已经建⽴了存储空间。
  2、另⼀种是不需要建⽴存储空间的,通过使⽤extern关键字声明变量名⽽不定义它。
Note:它必须以字母或下划线开头。⼤写字母和⼩写字母是不同的,⼜ C语⾔ 是⼤⼩写要求区分的。
5.3 Lvalues和Rvalues
  C 中有两种类型的表达式:分别是左值(lvalue)和右值(Rvalues)。
  左值(lvalue):指向内存位置的表达式被称为左值(lvalue)表达式。左值可以出现在赋值号的左边或右边。
  右值(Rvalues):术语右值(Rvalues)指的是存储在内存中某些地址的数值。右值是不能对其进⾏赋值的表达式,也就是说,右值可以出现在赋值号的右边,但不能出现在赋值号的左边。
  变量是左值,因此可以出现在赋值号的左边。数值型的字⾯值是右值,因此不能被赋值,不能出现在
赋值号的左边。
5.4 全局变量和局部变量

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。