初识C语言一

目录

1.第一个C语言程序

2.数据类型

3.变量与常量

     1.变量

     2.作用域

     3.常量

                    3.1字面常量

                    3.2const 修饰的常变量

                     3.3#define定义的标识符常量

                             3.4枚举常量

4.字符串与转义字符

5.选择语句

                  5.1if语句

                  5.2switch语句

6.循环语句

                  6.1while语句

                  6.2do  while语句

                  6.3for语句

7.函数 

 8.数组

                 8.1数组定义

                 8.2数组下标

                 8.3数组的使用

9.操作符

10.常见关键字

               10.1goto关键字

               10.2typedef

               10.3static关键字

1.第一个C语言程序

2.数据类型​编辑

 3.变量与常量

1.变量

     2.作用域

3. 常量

3.1字面常量

3.2const 修饰的常变量(本质上为变量,我们还会对此进行验证)

3.3#define定义的标识符常量

3.4枚举常量

4.字符串与转义字符

5.选择语句

5.1if语句

5.2switch语句

6.循环语句

6.1while语句

6.2do  while语句

6.3for语句 

7.函数

 8.数组

8.1数组定义

8.2数组下标

 8.3数组的使用

9.操作符

10.常见关键字

10.1goto关键字用于跳转,建议不要频繁使用goto关键字容易引起程序错误

10.2typedef用于对类型的重命名

10.3static关键字用于修饰变量和函数


0.前言

在此文章中我们主要对C语言进行初步了解,不做深入研究,适合初入C语言的人群观看。

1.第一个C语言程序

  在程序中有且只能有一个主函数,函数的使用需要引用库函数(库函数是C语言编译器提供的现成函数可以直接使用,在上面这个程序中scanf和printf均是库函数),在这个函数中我们创建了a这个变量,创建变量的实质是在内存中开辟一个空地,存放数据。如果我们需要输入一个函数就需要使用scanf函数从键盘上读取一个数据读到内存中,如果我们需要输出一个函数我们需要使用printf函数,将数据从内存中打印到屏幕上,这就是我们的的一个C语言函数。

2.数据类型

 

 数据存在多种类型,目的是为了更加丰富表达生活中的各种值,不同的数据类型的大小也是不同的,测定类型大小需要我们使用关键字sizeof注意sizeof是一个关键字并不是函数在上图最后一个printf我们可以看出来。如果测定一个人的体重我们可以使用double类型以更精确获得一个人的体重。

  不同的类型也拥有不同的输出格式,拥有不同的精度,如下

 3.变量与常量

1.变量

    变量即可变的量,例如我们的年龄,薪水

  变量可用数字,字母,下划线命名,注意变量名不能与关键字重名,不可用数字作为变量名的开头,且变量名的长度有所规定不可超过63个字符,字母有着大小写的区分;

变量有局部变量和全局变量之分,当全局变量和局部变量同时存在是优先使用局部变量;

     2.作用域

  作用域(scope)是程序设计概念,通常来说,一段程序代码中所用到的名字并不总是有效/可用 的而限定这个名字的可用性的代码范围就是这个名字的作用域。

1. 局部变量的作用域是变量所在的局部范围。

2. 全局变量的作用域是整个工程。 生命周期 变量的生命周期指的是变量的创建到变量的销毁之间的一个时间段

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

2. 全局变量的生命周期是:整个程序的生命周期。

 

    上图的输出结果为99;我们可以得知int a=66;在出大括号时自动销毁;

3. 常量

常量可分为四种

3.1字面常量

   6.666  5867这些数字即为字面常量

3.2const 修饰的常变量(本质上为变量,我们还会对此进行验证)

 

根据程序提示我们可以知道 const 修饰的常变量本质上还是变量

3.3#define定义的标识符常量

3.4枚举常量

4.字符串与转义字符

  字符串是由双引号引起来的一串字符称为字符串字面值简称字符串,注意字符串的结束标志是\0,对此我们进行验证

 

 从运行结果我们可以看出用双引号引起来的字符串自带一个\0,而且在测量arr2字符串长度时因为在字符串中并没有\0,所以strlen函数继续进行直到在储存空间中找到字符\0才结束。

转义字符

  转义字符(Escape character),所有的ASCII码都可以用“\”加数字(一般是8进制数字)来表示。而C中定义了一些字母前加"\"来表示常见的那些不能显示的ASCII字符,如\0,\t,\n等,就称为转义字符,因为后面的字符,都不是它本来的ASCII字符意思了。

  例如我们要打印一个目录

   很明显这并不是我们想要的,因为在其中包含有转义字符

 我们为防止其被转义可以使用\\从而达到我们打印目录的目的

5.选择语句

5.1if语句

if(表达式1)
语句一
else if(表达式2)
语句二
..
..
..
else if(表达式N)
语句N
else
语句N+1

else总是和在它之前出现的、尚未匹配的且离它最近的if相匹配

接下来我们举一个最简单的if选择语句的例子

 身为当代优秀青年我们当然要好好学习,拒绝摆烂从我做起。

5.2switch语句

switch语句基本形式

switch (表达式)
{
    case 常量表达式1:    语句1
    case 常量表达式2:    语句2
       ┇
    case 常量表达式n:    语句n
    default:        语句n+1
}

我们继续举例子

 在程序中我们要输出星期二,但是程序却输出了星期二到星期日和输入错误,这种现象是由于case拥有穿透性,在上面程序中他会从case2到default的内容全部输出,我们此时可以用break跳出

 此时我们便得到了我们想要的结果,所以绝不可以粗心大意丢掉break。

6.循环语句

我们可能在日复一日努力着,对于我们程序员就在不断敲着代码,当你敲够几万行代码你也就从代码小白变成了代码大牛,敲几万代码就是我们成为大牛的一个判断条件,废话不多说,举栗子。

6.1while语句


#include<stdio.h>
int main()
{
	int a = 1;
	while (a < 20000) {
		a++;
	}
	printf("我成为大牛了!");
	
	return 0;
}

​

​

6.2do  while语句

do while语句和while语句非常相似,区别就在于do while语句至少运行一次。


#include<stdio.h>
int main()
{
	int a = 1;
	do{
		a++;
	}while (a < 20000)
	printf("我成为大牛了!");
	
	return 0;
}

​

​

6.3for语句 

基本形式如下

for(初始化语句;判断条件语句;控制条件语句){
循环体语句;
}

举个栗子

7.函数

一个函数包含有函数名,函数返回类型,函数体,参数参数

函数返回类型   函数名 (函数参数){
函数体
}

 依然举栗子

我们如果计算两个数相加我们可以直接进行加法运算还可以使用函数进行运算

 8.数组

数组是一组相同数据类型的数

8.1数组定义

 当数组赋值后数组的大小可以不输入,当数组大小给定后数组赋值个数小于数组大小就用零补齐,注意在二维数组定义时一般行可以省略,列不能省略。

8.2数组下标

数组的下标是从零开始的,是从零开始的,是从零开始的重要的事情说三遍

 8.3数组的使用

9.操作符

  算数操作符

+两数相加
-两数相减
*两数相乘
/两数相除
%两数相除取余数

  移位操作符

<<   右移操作符

>>   左移操作符

知识补充,在我们的计算机存储中计算机存储的其实是补码,在运用移位操作符时其实是对补码进行移位,正数的原码反码补码都一样,而负数的补码需要对原码进行按位取反再加一,注意按位取反符号位不能变。

我们正负数都举一个栗子

 

 

   位操作符

&按位与,简单来说就是有0为0全1为1

1100

0101

0100

|按位或,简单来说就是有1为1全0为0

1100

0101

1101

^按位异或,简单来说就是同为0异为1

1100

0101

1001

  赋值操作符

=a=b把b的值给a
+=a+=b等效于a=a+b
-=a-=b等效于a=a-b
*=a*=b等效于a=a*b
/=a/=b等效于a=a/b
^=a^=b等效于a=a^b
!=a!=b  a不等于b
>>=a>>=b等效于 a>>b
<<=a<<=b等效于  a<<b
&=a&=b等效于 a=a&b

  单目操作符(只作用于一个操作数的操作符)

!逻辑反操作,真变假,假变真,0为假,非0为真
-负值
+正值
&取地址操作符
sizeof操作数的类型长度
~对二进制位按位取反
--自增
++自减
*解引用操作符
()强制类型转换符

对其中几个难点举个栗子

 从程序中我们可以看出程序输出出现错无法打印double类型的a,我们可以使用强制类型转换符

关系操作符

>
<
<=
>=
!=
==          注意==是判断   =是赋值

 逻辑操作符

 

条件操作符

基本格式为

exp1?exp2:exp3
如果exp1为真则进行exp2如果exp1为假则进行exp3

 逗号表达式

exp1,exp2,......expN

 逗号表达式从左向右依次进行

下标引用,函数调用,结构成员

[]    ()      .  ->

下标引用操作符用于引用数组下标,例如arr[1]

函数调用是调用一个函数,例如调用Add函数用Add()

10.常见关键字

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 volatil while
C语言提供的关键字已经设定好,用户不能创建关键字

这里简单介绍几个较为特殊的关键字static   goto    typedef    extern 

10.1goto关键字用于跳转,建议不要频繁使用goto关键字容易引起程序错误

在上面这个程序中,程序在反复横跳,导致程序出现错误,所以说如果goto关键字使用错误非常容易引起程序错误 

10.2typedef用于对类型的重命名

这里我们对类型unsigned  int 类型重命名为unint,是不是非常简单

10.3static关键字用于修饰变量和函数

1. 修饰局部变量-称为静态局部变量

2. 修饰全局变量-称为静态全局变量

3. 修饰函数-称为静态函数

10.3.1修饰局部变量

static 修饰局部变量改变了变量的存储类型(位置),本来一个局部变量是存放在栈区的,如果被stati修饰就储存在静态区了,使得这个静态变量的生命周期变长了直到程序结束才结束,举个栗子

如果我们不用static修饰局部变量,这时i存放在栈区,数据出了作用域就被”销毁“,进入作用域重新调用

我们再用是static修饰局部变量,这时I存储在静态区

 以上就是static修饰局部变量

10.3.2修饰全局变量

static 修饰全局变量
1.全局变量具有外部链接属性,所以在其他源文件内部依然可以使用(方法要正确) 
2.static修饰全局变量,改变了这个全局变量的链接属性,由外边链接属性变成了内部链接属性
3.这个静态变量只能在自己所在的源文件内部使用,不能在其他源文件内部使用了

 我们再用static对变量进行修饰

 程序出现错误,可见static改变了全局变量的链接属性

10.3.3修饰函数(修饰函数和修饰全局变量作用效果相同)

 

 11.#define定义常量和宏

#define定义常量

#define定义宏 。

                                                                                                                                                                       

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值