初识C语言

作者:云小逸
个人主页:云小逸的主页
码云:云小逸 (YunXiaoYang003) - Gitee.com
motto:要敢于一个人默默的面对自己,强大自己才是核心。不要等到什么都没有了,才下定决心去做。种一颗树,最好的时间是十年前,其次就是现在!学会自己和解,与过去和解,努力爱自己。希望春天来之前,我们一起面朝大海,春暖花开
专栏:C语言初阶专栏:C语言进阶专栏:数据结构和算法
专栏:C++初阶—专栏:C++进阶–专栏:Linux学习

初识C语言_第1张图片

文章目录

  • 前言
  • 一、语言
    • 1.应用:
    • 2.语言的发展:
    • 3.C语言国际标准:
    • 4.补:
  • 二.创建C语言程序
  • 三.数据类型
  • 四.变量和常量
      • 变量:分为==局部变量== 和==全局变量==。
      • 常量:分为四种
        • 1.字面常量:
        • 2.const修饰的常变量:
        • 3.#define
        • 4.枚举常量
        • 5.补:
  • 五.字符串
  • 六:注释
  • 七.转义字符
  • 八.结构
      • 1.顺序结构
      • 2.选择结构 if {…………} else{ …………}
      • 3.循环结构(“日拱一卒无有尽,功不唐捐终成海。”)
  • 八.函数
  • 九.数组
  • 十.操作符
  • 十一.常见的关键字
  • 十一、关键字
    • 1.typedef——类型定义,只能针对类型
    • 2.static
      • (1)static修饰局部变量:
      • (2).static修饰全局变量
      • (3).static修饰函数
      • 总结:
        • 1.static修饰变量
          • a. 函数中局部变量:
          • b. 全局变量
          • c. 修饰变量时,没有被初始化时会被自动初始化为0
        • 2. static修饰函数
        • 3. register——寄存器
  • 十二.#define定义标识符常量和宏
    • 1#define:
    • 2.宏:
  • 最后


前言

俗话说:“C生万物”,相信有很多小伙伴,入门计算机的第一门语言就是C语言吧,C语言不可否认其在编程中的价值,可谓是:“编程之本”,同时它也是我们踏入计算机大门的第一步,也是至关重要的一步,今天就让我们开始计算机的学习吧,加油,今天我们在这里种下一颗梦想的种子,希望不久的未来我们可以得到我们想要的花朵,加油,加油,加油!!!


一、语言

由于人与人之间需要交流,因此有了汉语,英语,日语,意大利语……,而人与计算机之间也需要交流,使计算机执行人的指令,由此诞生了像C/C++/Java/python等近千种语言。

而接下来我们谈一谈号称“编程之本 ”的C语言

1.应用:

初识C语言_第2张图片
(这是关于C语言的应用图(自己画的()后面的也是,来个一键三连,支持一下吧)

2.语言的发展:

初识C语言_第3张图片

3.C语言国际标准:

ANSI C(面向过程 ,C++/Java是面向对象)

4.补:

编译器:CLang、GCC、EIN-TC
编辑器(只有编辑功能):MSVC(vs2019就是用的它)

test.c文件经过编译、链接成test.exe文件。C/C++是编译型语言,Python是解释型语言。

二.创建C语言程序

1.C语言有且只能有一个main函数(程序的入口)
2.void main()(不推荐这种写法,太古老了)

int main(void)中void可有可无,int与return 0中的0对应,0代表整数
3.printf----需要调用库函数,因此需要#iclude,其中
std----standard
i-----input
o-----output

三.数据类型

初识C语言_第4张图片
初识C语言_第5张图片

sizeof()是求有多少字节的,输出用%zu
C语言规定:sizeof(long)>=sizeof(int)
类型的使用实际上是创建变量,进而向内存申请空间

四.变量和常量

变量:分为局部变量全局变量

初识C语言_第6张图片

1.extern int a;//声明外部的符号
2.局部变量不可以多重定义
3.当局部变量与全局变量冲突,局部变量优先,但两者最好不要相同
4.定义变量时最好要
初始化,否则则是随机值。
5.本质上看,变量代表了一段可操作的内存,也可以认为变量是内存的符号化表示。当程序中需要使用内存时,可以定义某种类型的变量。此时编译器根据变量的数据类型分配一定大小的内存空间。程序就可以通过变量名来访问对应的内存了。即上面提到的,向内存申请空间

常量:分为四种

1.字面常量:

类如30,3.14,‘w’,“abc”.

2.const修饰的常变量:

const int a=10,则a的值不可以再修改
在C语言中,const修饰的a,本质上是变量,但不可以直接修改,有常量的性质。

3.#define

#define a 10
其中a不定类型,可整数,浮点数,字符串,此后不可以在a=100赋值

4.枚举常量
enum Color
{    RED,GREEN,BULE}//一般为大写字母,对应1,2,3
之后 在main函数中enum Color c = RED;但不可以RED=10,
枚举常量可以以%d输出。
5.补:
int n=10;int a[n]={0};//这是错误的,n必须为常量,
就算加上const也不可以。

五.字符串

char ch1=‘w’;
char ch[]="abcdef";
stackInit(ch);//如果需要调用函数,传递字符串,则传ch
char arr1[10]="abcdef";//10也可以不写,该字符串占用7个空间

字符串的结束标志:‘\0’

char arr2[]={'a','b','c','d','e','f'};//该字符串占用6个空间

则打印出:

printf("%s",arr1);//abcdef
printf("%s",arr2);//abcdefXXXXXXX

why?
初识C语言_第7张图片

打印字符串时遇到‘\0’才会停止!而arr2中的‘\0’的位置未知
注:打印字符串打印不出来‘\0’.

六:注释

C语言:/* */不适合嵌套注释,因为/会和与它最近的/配对,而不是与你想配对的进行配对。
C++: //

七.转义字符

在一些字符前加 “\” 使它具有其他意义

\ddd表示1-3个八进制的数字

\Xdd表示2个十六进制的数字

其中空格也是字符。
初识C语言_第8张图片

strlen("c:\test\628\test.c")//14个字节

八.结构

C语言是结构化的程序设计与语言。

1.顺序结构

2.选择结构 if {…………} else{ …………}

在一瞬间有一万种可能链接:▶ 一百万个可能 (163.com)

作词 : Christine Welch(克丽丝叮)
作曲 : Skot Suyama(陶山)
幽静窗外满地片片寒花
一瞬间永恒的时差
窝在棉被里
倾听踏雪听沉默的声音
飘雪藏永恒的身影
雪树下等你

在一瞬间有一百万个可能
该向前走或者继续等
这冬夜里有百万个不确定
渐入深夜或期盼天明
云空的泪一如冰凌结晶了
成雪花垂
这一瞬间有一百万个可能
窝进棉被或面对寒冷

幽静寒风吹来一缕声音
一瞬间看着你走近
暖了我冬心
倾听踏雪听沉默的声音
飘雪藏永恒的身影
雪树下等你

在一瞬间有一百万个可能
该向前走或者继续等
这冬夜里有百万个不确定
渐入深夜或期盼天明
云空的泪一如冰凌结晶了
成雪花垂
这一瞬间有一百万个可能
窝进棉被或面对寒冷

那晚上会是哪个瞬间
说好的爱会不会改变
而你让我徘徊在千里之外
yeah你让我等待好久baby
突然间那是哪个瞬间
你终于出现就是那个瞬间
等了好久忍不住伸手那个瞬间

在一瞬间有一百万个可能
该向前走或者继续等
这深夜里有百万个不确定
渐入冬林或走向街灯
云空的泪一如冰凌结晶了
成雪花垂

这一瞬间有一百万个可能
暖这冬心或面对寒冷
该向前走或者继续等
渐入冬林或走向街灯
窝进棉被或面对寒冷
暖这冬心或面对寒冷

3.循环结构(“日拱一卒无有尽,功不唐捐终成海。”)

while、for、do……while

人生95%的奋斗时光,都是沉默无言甚至悄无声息的。

接受鲜花和掌声的那一刻固然绚烂,背后却可能是

无数个无人问津、无人认可、无人支持的日日夜夜。

做事不必急于去表现自己的心酸苦楚,

静下心来日复一日地努力,才可能慢慢发生蜕变。

八.函数

函数的特点就是简化代码,代码复用。如果将所有信息都放在main函数,那么可以想象这个程序会有多么的臃肿,所以将不同代码放在一个个函数中,由此可以简化代码,以及使用。


九.数组

1.数组的下标从0开始
2.不要把整形数组字符数组搞混淆了:

int a[];//不可以
int a[]={};//不可以
int a[]={1,2,3};//这个是可以的,站3个空间,不是4个!!!

3.补:C语言中0的用法

0———数字0
'0'———字符0,ASCII码为48
'\0'————字符。ASCII码为0:EOF————end of file 文件结束标志,值为-1:char a[]={'b','i','t'};
strlen(a)=随机值,因为‘\0’位置未知
补:char b[4]={'b','i','t'};
strlen(b)=3;因为这种表达式是叫做不完全初始化,
剩余部分默认为0,而ASCII码为0的是'\0'

4.变长数组

int n=10;
a[n]={0};

C99标准之前,数组的大小都是用常量或常量表达式来指定的;
C99标准之后,支持了变长数组,这个时候允许数组的大小是变量,但是此类不可以初始化;且市面上一些编译器,如VS对C99中的一些语法支持不是很好,其不支持变长数组。

十.操作符

1.算术操作符 :+ - * / %

int a=7/2;//3,求商数
除号(/)两端均为整数时,执行整数除法
若两端只要存在一个以上的浮点数,就执行浮点数的除法,如a=7/2.0;
int b=7%2;//1,求余数,又叫取模
取模两端必须均为整数

错误例子:
初识C语言_第9张图片
2.这两个操作符和二进制有关,暂时不细说,以后会说
初识C语言_第10张图片
*3.赋值操作符:= += -= = /= &= ^= |= >>= <<=

a-=3;//与a=a-3;等价

4.逻辑表达式:&& ||

&&——逻辑且,并且
||——逻辑或,或者
if(a&&b);//a,b均为真
if(a||b);//两者中至少有一个为真

5.条件(三目)操作符:exp1? exp2 : exp3
初识C语言_第11张图片

int r=a>b?a:b;
即若a>b为真,则 r=a,反之则为r=b;

6.逗号表达式:exp1, exp2, exp3, …expN
即逗号隔开的一串表达式,从左向右依次计算,整个表达式的结果是最后一个表达式的结果

int d=(c=a-2,a=b+c,c-3;//d=5

7.下标引用操作符:[]

int arr[10]={0,1,2,3,4,5,6,7,8,9};
arr[3]=10;//其中[]就是下标引用符号,arr和3是操作数
//这是赋值

8.函数调用符:{}

int sum=add(2,3//其中add,2,3是操作数

十一.常见的关键字

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 unio unsigned   void  volatile  while 

补:变量的命名:
1.有意义,如age,salary
2.字母,数字,下划线,但不可以以数字开头
3.不可以是关键字

十一、关键字

1.typedef——类型定义,只能针对类型

typedef unsigned int unit//等价于unit=unsigned int
typedef struct Node
{   ……;
    ……;
}Node;//等价于Node=struct Node

2.static

static 一般用于修饰局部变量,全局变量,函数;

(1)static修饰局部变量:

#include
void test()
{
	int a = 1;
	a++;
	printf("%d   ", a);
}
int main(void)
{
	int i = 0;
	while (i <= 10)
	{
		test();
		i++;
	}
	return 0;
}

此时结果为2 2 2 2 2 2 2 2 2 2
将int a=1;改为static int a=1; 后:
结果为2 3 4 5 6 7 8 9 10
是因为改为static int a=1;后,出了作用域,不会销毁a的值,想要理解其本质,首先先看一下这个图:

初识C语言_第12张图片

static修饰局部变量时,会影响局部变量的生命周期,本质上改变了局部变量的存储位置,生命周期变长,为整个周期。静态局部变量存储于进程中的全局数据区。
初识C语言_第13张图片

初识C语言_第14张图片

(2).static修饰全局变量

首先我们要知道全局变量的属性:全局变量具有外部链接属性。而static修饰全局变量时,这个全局变量的外部链接属性变为内部链接属性,是其他源文件(.c)文件就可以再使用这个全局变量了。则使用时我们会感觉到该全局变量作用域变小。

初识C语言_第15张图片
初识C语言_第16张图片

(3).static修饰函数

此类情况类似于static修饰全局变量。函数同样具有外部属性。而static修饰函数时,这个函数的外部链接属性变为内部链接属性,是其他源文件(.c)文件就可以再使用这个函数了。则使用时我们会感觉到该函数作用域变小。

初识C语言_第17张图片
初识C语言_第18张图片

总结:

1.static修饰变量
a. 函数中局部变量:
  声明周期延长:该变量不随函数结束而结束

  初始化:只在第一次调用该函数时进行初始化

  记忆性:后序调用时,该变量使用前一次函数调用完成之后保存的值

  存储位置:不会存储在栈上,放在数据段
b. 全局变量
 改变该变量的链接属性,让该变量具有文件作用域,即只能在当前文件中使用
c. 修饰变量时,没有被初始化时会被自动初始化为0
2. static修饰函数

改变该函数的链接属性,让该函数具有文件作用域,即只能在当前文件中使用

3. register——寄存器

register int num=3;//建议将num存放在寄存器上
为了便于你理解register的作用,请看这个图:

初识C语言_第19张图片

十二.#define定义标识符常量和宏

1#define:

#define a 10其中a不定类型,可整数,浮点数,字符串,但此后不可以在a=100赋值

2.宏:

#define ADD(x,y) ((x)+(y))

在main函数中引用是这样的:

int c=ADD(a,b);//等价于 int c=((a)+(b))

初识C语言_第20张图片


最后

十分感谢你可以耐着性子把它读完和我可以坚持写到这里,送几句话,对你,也对我:

1.这个世界根本不存在“不会”这回事。当你失去所有依靠的时候,你自然就什么都会了。
2…当你足够优秀时,你周围的一切自然都会好起来。
3…一滩烂泥,也可以仰望星空,站在最高处的石头,便是星辰。
4.没有不可治愈的伤痛,没有不能结束的沉沦,所有失去的,都会以另一种方式归来。

最后如果觉得我写的还不错,请不要忘记点赞✌,收藏✌,加关注✌哦(。・ω・。)

愿我们一起加油,奔向更美好的未来,愿我们从懵懵懂懂的一枚菜鸟逐渐成为大佬。加油,为自己点赞!

你可能感兴趣的:(C语言,c语言)