C语言初识总结

目录

1.什么是C语言

2.第一个C语言程序

3.数据类型

4.变量和常量 

5.字符串,转义字符和注释

6.选择语句

7.循环语句

8.函数

9.数组

 10.操作符

11.常见关键字

12.#define定义常量和宏

13.指针

14.结构体


1.什么是C语言

C语言是一门通过计算机编程语言,广泛应用于底层开发。C语言的设计目标是提供一种能以简易

的方式编译丶处理低级存储器丶产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

2.第一个C语言程序

 

 (编译+链接+运行:Ctrl+F5);

  •  main是C语言中的主函数,是程序的入口。整个工程中main有且仅有一个;标准写法为:

     int main()   / /main(viod)也是可以的,表示不需要参数,我们一般不写。

     {

     return 0;    / /这里是返回值,返回的类型就是前面的int,return返回的值也与前面定义的类型有关

     }

  • printf——库函数,也是一种输出函数,是用来打印屏幕上相关的数据,如上面的hello world,这里注意的是它打印的数据要用引号括起来。printf()是C语言本身就有的,我们需要引出它,这里就有我们的头文件。
  • scanf——库函数,也是一种输入函数,用来获取用户输入的相关数据,一般写法为scanf("格式符",&输入参数)。注意:数组名不需要取地址,因为数组名本身就是地址。
  • #include<stdio.h>,这就是一个输入输出的头文件,当我们的代码中出现printf()scanf()时就要引用这个头文件。//当然头文件可以有多个,使用库函数就要包含对应的头文件。

3.数据类型

char字符数据类型1 byte
short短整型2 byte
int整形4 byte
long长整型4 byte
long long更长的整形8 byte
float单精度浮点型4 byte
double双精度浮点型8 byte

 注:

1byte(字节)=8bit(位)                              1KB=1024byte

1MB=1024KB                                        1GB=1024MB

......

C语言中通常用int来定义整数,short、int、long 是C语言中常见的整数类型。让整数占用更少的内存可以在 int 前边加 short,让整数占用更多的内存可以在 int 前边加 long,也可以将 int 省略,只写 short 和 long。

2 ≤ short ≤ int ≤ long (所占字节数)

C语言中常用的小数有两种类型,分别是 float 或 double;float 称为单精度浮点型,double 称为双精度浮点型。

不像整数,小数没有那么多幺蛾子,小数的长度是固定的,float 始终占用4个字节,double 始终占用8个字节。

C语言中char一般修饰字符数据类型,值得注意的是:对象为单个字符是用单引号,对象为字符串时用双引号。

4.变量和常量

  •     变量 

变量分为全局变量和局部变量,在大括号内部的为局部变量,在大括号外部的为全局变量。如图:

 (全局变量不一定只在main函数内,只要在大括号中都是局部变量)

全局变量

 在所有函数外部定义的变量称为全局变量,它的作用域默认是整个程序,也就是所有的源文件。全局变量的生命周期:是整个程序的生命周期。

局部变量

定义在函数内部的变量称为,它的作用域仅限于函数内部,离开该函数的内部就是无效的,再使用就会报错。

局部变量的生命周期:进入作用域生命周期开始,出作用域生命周期结束。

  •     常量

(1)字面常量

3.14;    

"abcde";                                

1000;

 (2)const修饰的常变量

const int n=10;

此时的n就具有常量的属性,但是本质还是一个变量。

   (3)#define定义的标识符常量

 #define MAX 100

int main()

{

int m=MAX;

printf("%d\n",m);

printf("%d\n",MAX);

return 0;

}

   (4)枚举常量 

 枚举是C语言提供的一种自定义类型的方法,枚举就是一一列举。

enum Week{  }

printf("%d\n", MONDAY);

 printf("%d\n", TUESDAY);  

 printf("%d\n", WEDNESDAY);    

注:枚举常量的默认是从0开始,依次向下递增1的

5.字符串,转义字符和注释

  •  字符串

由双引号引起来的一串字符叫做字符串。

字符串的结束标志是一个\0的转义字符。在计算字符串长度的时候 \0 是结束标志,不算作字符串内容。如图:

 

 char arr2[]={'a','b','c','d','e','f'};    / /单个字符中的末尾要添加一个'\0',否则结果结果为随机值。

  •  转义字符

转义字符
\?在书写连续多个问号时使用,防止他们被解析成三字母词
\'用于表示字符常量'
\''用于表示一个字符串内部的双引号
\\用于表示一个反斜杠,防止它被解释为一个转义序列符。
\a警告字符,蜂鸣
\b退格符
\f进纸符
\n换行
\r回车
\t水平制表符
\v垂直制表符
\dddddd表示1~3个八进制的数字
\xdd\xdd表示2个十六进制的数字
  • 注释

1. 代码中有不需要的代码可以直接删除,也可以注释掉。

2. 代码中有些代码比较难懂,可以加一下注释文字。

注释有两种风格:

C语言风格的注释 /*xxxxxx*/

缺陷:不能嵌套注释

C++风格的注释 //xxxxxxxx

可以注释一行也可以注释多行

6.选择语句

#include <stdio.h>

int main()

{

int age;

printf("请输入你的年龄:");

scanf("%d", &age);

if(age>=18)

{

printf("恭喜,你已经成年,可以使用该软件!\n");

}

else

{

printf("抱歉,你还未成年,不宜使用该软件!\n");

}

return 0;

}



7.循环语句

  • if语句

语法结构:

(1)if(表达式);

         语句;

(2)if(表达式);

         语句1;

        else

        语句2 ;

(3)if(表达式1)

         语句1;

         if  else(表达式2)

         语句2;

         else

         语句3;

如果if语句中的表达式为真,则执行语句。0为假,非0为真。(if与最近的一个else配对)

  • while语句

语法结构:

while(表达式)

循环语句;

用while循环计算1加到100的值

 如果循环条件中不包括变量

(1) 循环条件成立时的话,while 循环会一直执行下去,永不结束,成为“死循环”。

(2)    循环条件不成立的话,while 循环就一次也不会执行。

  •  do-well语句

语法结构:

do

循环语句

while(表达式)

do-while循环与while循环的不同在于:它会先执行“循环语句”,然后再判断表达式是否为真,如果为真则继续循环;如果为假,则终止循环。因此,do-while 循环至少要执行一次“循环语句”。

  • for语句

语法结构:

for(表达式1;表达式2;表达式3)

循环语句;

它的运行过程为:
1) 先执行“表达式1”。

2) 再执行“表达式2”,如果它的值为真(非0),则执行循环体,否则结束循环。

3) 执行完循环体后再执行“表达式3”。

4) 重复执行步骤 2) 和 3),直到“表达式2”的值为假,就结束循环。

  • 循环中的break和continue

continue:只能结束一次循环体,下次循环还继续执行。

break:只要遇到break,就停止后面的一切循环。

8.函数

#include<stdio.h>
int Add(int x, int y)
{
	return x + y;
}
int main()
{
	int n1 = 0;
	int n2 = 0;
	int sum = 0;
	scanf("%d%d", &n1, &n2);
	sum = Add(n1, n2);
	printf("%d\n", sum);
	return 0;
}

函数的特点就是简化代码,可以使代码被反复调用。

9.数组

C语言中给了数组的定义:一组相同类型元素的集合。

定义一个数组:

int  arr[5]={1,2,3,4,5};/ /最多放五个元素

C语言规定:数组的每个元素都有一个下标,下标是从0开始的。

数组可以通过下标来访问的。如图

 10.操作符

  • 算数操作符

+ , -, *, \, %.分别为加,减,乘,除,取模(就是求余)

注意:取模两端的操作数必须是整数。

  • 移位操作符

右移操作符>>     左移操作符<<      / /移动的是二进制位 

  • 位操作符

&(按位与) ,(按位异或) ^ ,(按位或) |           / /对两个二进制数进行运算

  • 赋值操作符

=  ,+=   ,-=  ,*=  ,/=   ,&=   ,^=   ,|=  ,>>=   ,<<=

x+=y等价于x=x+y。其他同。

  • 单目操作符

逻辑反操作
-负值
+正值
&取地址
sizeof操作数的类型长度(以字节做单位)
~对一个数的二进制位取反
--前置、后置--
++前置、后置++
*  间接访问操作符(解引用操作符)
(类型)强制类型转换
  • 关系操作符

>  ,>=  ,<  ,<=  ,!=  ,==

  • 逻辑操作符

&&(逻辑与)        ||(逻辑或)

  • 条件操作符

exp1?exp2:exp3       / /首先判断exp1是否成立,若exp1为真则返回exp2,若exp1为假则返回exp3

  • 逗号表达式

a,b,c,d,……n     / /赋值时取最后一个表达式的值

11.常见关键字

  • auto自动变量

int main()

{

 (auto)  int a=10;

return 0;

}      / /auto本来是用来修饰局部变量的,只不过我们将它省略了

  • 关键字typedef

 typedef unsigned int unit;   / /typedef相当于给unsigned int重新起名,把复杂的类型变得简单

int main()

{

unsigned int num1=0;

unit num2=0;         / /unit=unsiged int

return 0;

}

  • 关键字static

(1).static修饰局部变量

 static修饰局部变量的时候,改变了局部变量的存储类型:本来一个局部变量是存储在栈区,被static修饰的局部变量是存储在静态区的。

存储在静态区的变量出了它的作用域也不销毁,所以生命周期变长,它的生命周期和程序的生命周期一样。

(2).static修饰全局变量

 由图可知,由static修饰int g_val后,另一个源文件中的代码无法运行。

static修饰全局变量的时候,改变了全局变量的连接属性:本来一个全局变量是具有外部链接属性的,但是被static修饰之后就变成了内部链接属性。这时static修饰的全局变量只能在本源文件中使用,其他文件无法再使用。

(3).static修饰函数

static修饰函数与static修饰全局变量相似,一个函数本来也是具有外部链接属性的。当被static修饰的时候,外部链接属性就变成了内部链接属性,这个函数就只能在本源文件内部使用。

12.#define定义常量和宏

#define 叫做宏定义命令,它也是C语言预处理命令的一种。所谓宏定义,就是用一个标识符来表示一个字符串,如果在后面的代码中出现了该标识符,那么就全部替换成指定的字符串。

我们通过一个例子看下#define的用法:

#include <stdio.h>

#define N 100

int main(){

int sum = 20 + N;

printf("%d\n", sum);   // 运行结果120

return 0;

#define N 100就是宏定义,N为宏名,100是宏的内容(宏所表示的字符串)。在预处理阶段,对程序中所有出现的“宏名”,预处理器都会用宏定义中的字符串去代换,这称为“宏替换”或“宏展开”。

宏定义是由源程序中的宏定义命令#define完成的,宏替换是由预处理程序完成的。

宏定义的一般形式为:

#define  宏名  字符串

#表示这是一条预处理命令,所有的预处理命令都以 # 开头。宏名是标识符的一种,命名规则和变量相同。字符串可以是数字、表达式、if 语句、函数等。

这里所说的字符串是一般意义上的字符序列,不要和C语言中的字符串等同,它不需要双引号。

13.指针

指针的概念:

计算机中所有的数据都必须放在内存中,不同类型的数据占用的字节数不一样,例如 int 占用 4 个字节,char 占用 1 个字节。为了正确地访问这些数据,必须为每个字节都编上号码,就像门牌号、身份证号一样,每个字节的编号是唯一的,根据编号可以准确地找到某个字节。我们将内存中字节的编号称为地址或指针

指针可以存放在一个变量中,这个变量被称为指针变量。

指针大小在32位平台是4个字节,64位平台是8个字节。

int main()

{

int a=10,b=20,c=30;

int *pa=&a;  //定义指针变量,*解引用操作符

*p = b; //通过指针变量修改内存上的数据

c = *p; //通过指针变量获取内存上的数据

printf("%d, %d, %d, %d\n", a, b, c, *p);

return 0;

}

14.结构体

在实际的编程过程中,我们往往需要一组类型不同的数据,例如对于学生信息登记表,姓名为字符串,年龄为整数,所在的学习小组为字符,成绩为小数,因为数据类型不同,显然不能用一个数组来存放。

在C语言中,可以使用结构体(Struct)来存放一组不同类型的数据。结构体的定义形式为:

struct结构体名

{

 结构体所包含的变量或数组

};

下面为一个例子:

struct Stu

{

     char name[10];    //名字

     int   age;               //年龄 

     char  group;         //学习小组 

     double  score;     //成绩

结构体也是一种数据类型,它由程序员自己定义,可以包含多个其他类型的数据。
像 int、float、char 等是由C语言本身提供的数据类型,不能再进行分拆,我们称之为基本数据类型;而结构体可以包含多个基本类型的数据,也可以包含其他的结构体,我们将它称为复杂数据类型或构造数据类型。


  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值