C语言学习:基本语法

分号

如果你有其它编程语言的基础,相信你已经明白了分号的意义。分号在C语言中与多数语言相同,它代表了语句的结束。也就是说,一个完整的语句必须以分号结尾。

注释

注释就像是帮助文件一样,它可以帮助我们更快更容易的去阅读理解代码,在编译的时候它会被编译器忽略 。注释以/*开头,*/结束。

标识符

C标识符是用来标识变量、函数或自定义项目的名称。一个合法的标识符以大写字母A-Z或小写字母a-z或下划线_开始,后面跟有0个或多个字母、数字、下划线。
C标识符中不允许出现标点符号,比如、&、%等。C是区分大小写的语言,所以,在C中,Example和example是两个不同的标识符。
总的来说C标识符:
1. 由大写字符A-Z或小写字母a-z或下划线_开始;
2. 由大写字母A-Z、小写字母a-z、下划线_、数字0-9组成;
3. 不允许出现标点符号,如、&、%等;
4. 不可以是C语言中的保留字;
5. 区分大小写。
6. 自己的总结,希望是正确的,哈哈。

关键字

C语言中的关键字不允许作为变量名、常量名或其他标识符名称。

Name Name Name
auto else long
switch break enum
register typedef case
extern return union
char float short
unsigned const for
signed void continue
goto sizeof volatile
default if static
while do int
struct _Packed double
1.C语言的数据类型
基本类型
   a.整型:
      整型 int   Visual c++6.0 中占4 个字节; Turbo c 2.0占 2个字节 取值:-2147483648 -2147483647
      短整型 short int 2个字节 取值:-32768 - 32767
      长整型 long int   4个字节取值:-2147483648 - 2147483647
       无符号整型 unsigned int 4个字节 取值:0-4294967295
       无符号短整型 unsigned short int 2个字节
       无符号长整型 unsigned long int   4个字节
       注:对于不同的编译环境,整型在内存中所占的字节数也不一样。
   b.字符型:
      char (\n 回车 \t 下一制表位置 \r 回车 \'单引号 \\ :反斜杠字符"\")
      注:对于c语言的任何一个字符都可用转义字符来表示
      如:\101表示字符"A",\134表示反斜杠,\XOA表示换行
      对于字符串常量内存字节数要加1,用来存放字符结束标志符"\0"
   c.实型:
      单精度 float 占4个字节,32位。取值为:3.4E-38 ~ 3.4E+38 ,可提供6到7位有效数字
      双精度 double 占8位字节,64位。取值:1.7E-308 ~1.7E+38
    d.枚举:
       enum
构造类型
    a.数组 array
    b.结构体 struct
    c.共用体 union
指针类型 *
空类型 void

2.输入输出函数
printf(格式控制字符串,输出列表) //格式控制字符串可由格式字符串(以%开头)和非格式字符串(原样输出)组成.
scanf(格式控制字符串,地址表列)
putchar() //字符数据的输出 等同与 printf(%c,.) 位于<stdio.h>中
getchar() //从键盘输入中读取一个字符。scanf(%c,&mchar)

3.逻辑运算
   !(非) ,&&(与), ||(或)

4.二维数组
定义: 类型说明符 数组名[常量表达式1][常量表达式2]
注:a.存储器单元是一维线性排列的。是按行存放的。
       b.对于全部元素赋初值,则数组第一维的长度可以省略,但是第二维不能省。如:int a[][3]= {1,2,3,4,5,6}
       c.可以只对部分元素赋初值,没赋初值的元素自动取0值。
       d.一个二维数组可以分解为一个多个一维数组。例:a[3][4]可分解为三个一维数组,其数组名分别为a[0],a[1],a[2],而这个
        一维数组都有4个元素。如一维数组a[0]有元素为:a[0][0],a[0][1],a[0][2],a[0][3]

5.字符数组
c中没有字符串数据类型,是用字符数组来表示字符串变量的。字符串总是以'\0'作为串结束符,所以,字符串就是一种以‘\0’结束的字符数组。
注:在求字符串长度时,不包含结束符'\0'。但是sizeof却要包含。如:
char c[]="string";
char c1[]={'s','t','r','i','n','g','\0','\0'};
printf("%d\n",sizeof(c)); // 7 ,默认在string后加'\0'
printf("%d\n",sizeof(c1)); //8,对于字符数组只能自己加结束符
printf("%d\n",strlen(c)); //6 求字符串长度时,不包含结束符'\0'
printf("%d\n",strlen(c1)); //6 求字符串长度时,不包含结束符'\0'
常用的字符串处理函数(在stdio.h中与string.h中):
puts(字符数组名)---把字符数组中的字符串输出到显示器。
gets(字符串数组名)--从输入设备得到字符串。
strcat(字符数组名1,字符数组名2)--把字符数组中2中的字符串连接到字符数组1中字符串的后面,并删除字符串1后的串标志"\0";
strcpy(字符数组名1,字符数组名2)--把字符数组2中的字符串复制到字符数组1中,串结束标识'\0'也一同复制。
strcmp(字符数组名1,字符数组名2)--按照ASCII码顺序比较两个数组中的字符串,并由函数返回比较结果。
strlen(字符数组名)---返回字符实际长度(不含字符'\0')

6.函数

对于被调用函数的声明和函数一般形式:类型说明符 被调函数名(类型,类型,..);
注:如果被调用函数的返回值是整型或字符型时,可以不对被调用函数作说明而直接调用。
       如果被调用函数定义出现在主调用函数之前,在主函数可以不对被调用函数作说明而直接调用。
     
7.变量的作用域及存储特性
a.局部变量:又称内部变量。在函数内作定义说明,其作用域仅限于函数内。
     注:允许在不同的函数中使用变量名,它们代表不同的对象,分配不同的单元,互不干扰。
b.全局变量:又称外部变量,它是在函数外部定义的变量。它不属于哪一个函数,而属于一个源程序文件。其作用域是整个源程序。在函数中使用全局变量,一般应作全局变量说明。只有在函数中经过说明的全局变量才能使用,说明符为:extern.但是在一个函数之前定义的全局变量,在该函数内可以再加以说明。
     另注:外部变量在定义时就已分配了内存单元,外部变量定义可作为始赋值,外部变量说明不能再初始值,只是表明在函数内要使用某外部变量。
     在同一源文件内,允许全局变量和局部变量同名,在局部变量的作用域内,全局变量不起作用。
变量的存储特性:
a.auto(自动变量)默认。为动态存储,既只有在使用它才分配存储单元,开始它的生命周期。
b.extern(外部变量)   为静态存储,外部变量等同与全局变量。当一个源程序由若干个源文件组成时,在一个源文件中定义的外部变量在其它的源文件中也有效。
c.static(静态变量) 为静态存储方式,可分为静态局变量和静态全局变量。
   静态局变量:在局部变量的说明前再加上static说明。
如:在一个函数 f() { static int a,b;
                                  static float a[5]; ...}
    特点:(1).静态局部变量在函数内定义,当调用时已存在。当函数f()退出时仍然存在,生存周期为整个源程序。
              (2).静态局部变量虽然生存周期为整个源程序,但是退出其函数后存在但是不能使用。
              (3).允许对构造类静态局部量赋初值。若未赋值,则系统自动赋值为0值。
              (4).对基本类型的静态局部变量若没赋值,则系统自动赋值为0.而对于自动变量不赋初值,则其值是不固定的。
   静态全局变量:全局变量再加以static就成了静态全局变量。对于静态全局变量其则只在定义该变量的源文件有效,在同一源文件的其他源文件中是不能使用的。
              (5).把局部变量改变为静态变量后就是改变它的存储方式,即生存周期。把全局变量改变为静态变量后改变它的作用域,限制了它的使用范围。
d.寄存器变量(register).当一个变量反复访问时,就可将此变量声明为register。放在cpu的寄存器中。别注:只有局部自变量和形式参数才能定义为寄存器变量。使用个数很有限。对于Truboc 、MS C等使用是按自动变量处理的。

8.内部函数和外部函数
   内部函数--一个只能被本文件中的其他函数所调用的函数。形式:static 类型 函数名(形参表)
   外部函数---如果在函数标识符前面加上extern,形式:extern int fun(int a,int b) 其中,extern为默认。

9.指针变量声明
    [存储类型] 类型标识符 *指针变量名;  
  

猜你喜欢

转载自blog.csdn.net/andrewniu/article/details/80566234