文章目录

  • 一.什么是C语言?
  • 二.第一个C语言程序
  • 三.数据类型
  • 四.变量,常量
  • 五.字符串
  • 六.选择语句
  • 七.循环语句
  • 八.函数
  • 九.数组
  • 十.操作符
  • 十一.常见关键字
  • 十二.指针
  • 十三.结构体

一.什么是C语言?

  • C语言是一门通用的计算机编程语言(计算机编程语言又被简称为计算机语言,它是人机交互的底层桥梁。迄今为止,已经有成千上万种机器语言,而C语言只是其中一种),其广泛应用于底层开发(所谓底层即操作系统及以下:诸如操作系统,驱动等。当然,这并不代表C语言无法应用于上层软件开发,例如早期的QQ就是用C语言编写的)
  • C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码(机器码指的是将硬件序列号经过一系列加密、散列形成的一串序列号)以及不需要任何运行环境支持便能运行的编程语言。
    ·>尽管C语言提供了许多低级处理的功能,但仍然保持着良好的跨平台特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。
  • 二十世纪八十年代**,为了避免各开发厂商所用的C语言语法产生差异,由美国国家标准局为C语言制定了一套完整的美国国家标准语法,称为ANSI C,作为C语言最初的标准。 [1] 目前2011年12月8日,国际标准化组织(ISO)和国际电工委员会(IEC)发布的C11标准是C语言的第三个官方标准,也是C语言的最新标准(C89,C90,C99,C11。其中C89和C90应用的比较广泛,外加少许的C99标准内容),该标准更好的支持了汉字函数名和汉字标识符,在一定程度上实现了汉字编程。
  • C语言是一门面向过程的计算机编程语言,与C++,Java面向对象的编程语言有所不同。 其编译器主要有Clang(苹果开发)、GCC(Linux操作系统下)、WIN-TC、SUBLIME、MSVC(vs)、Turbo C等。

二.第一个C语言程序

#include<stdio.h>
//stdio--standard input and output.标准输入输出头文件
//在使用输入输出库函数时需要包含该头文件 int  main()
//main()即主函数,是程序的执行入口,一个工程内可以包含多个.c文件
//但多个.c文件中有且只能有一个主函数
{printf("hello,world!\n");
//printf是专门用于在屏幕上打印的库函数,可指定输出格式return 0;
//return 0表示正常返回,与代码前方的int相互呼应
}
#include <stdio.h>int main(void)
//void 写到这里表示的是main函数不需要参数
{printf("hehe\n");return 0;
}
#include <stdio.h>int main()
{printf("%d\n", 100);            //%d是指在屏幕上以10进制的形式打印出一个整型数值printf("helloworld\n");printf("hello\nworld\n");return 0;
}

三.数据类型

  • char

字符数据类型,输出时可选用%c进行打印。

  • short

短整型数据类型,输出时可选用%d进行打印。

  • int

整型数据类型,输出时可选用%d进行打印。

  • long

长整型数据类型,输出时可选用%d进行打印。

  • long long(C99中引入的数据类型)

长整型数据类型,输出时可选用%d进行打印。

  • float

单精度浮点数,输出时可选用%f进行打印。

  • double

双精度浮点数,输出时可选用%lf进行打印。

·>1. C语言中没有字符串数据类型,但可以使用字符数组进行存放,并使用%s进行输入打印。

·>2. C语言中出现诸多数据类型是为了让程序员在进行程序设计时,选用最恰当的类型进行变量存放,尽量少的占用内存空间

·>3. 如何计算数据类型的长度?(示例如下)

#include <stdio.h>                           int main()
{char ch = 'w';                             ///变量的创建方式:数据类型+变量名short age = 20;float weight = 45.5f;                      //f表示:该数据是一个float类型的数据double salary = 10000.5;                   //编译器默认以为是double类型的数据printf("%d\n%lf\n",age, salary);           printf("%d\n",10);                         printf("%d\n",sizeof(char));               //%d这个格式表示的是在屏幕上打印一个10进制的整数,\n表示换行printf("%d\n",sizeof(short));             //sizeof是一个操作符,单位是字节。其专门用于计算数据类型或是变量的大小printf("%d\n",sizeof(int));               printf("%d\n",sizeof(long));              printf("%d\n",sizeof(long long));printf("%d\n",sizeof(float));printf("%d\n", sizeof(double));           return 0;                                 }

四.变量,常量

1.生活中有些值是可变的,有些值是永恒不变的。在C语言中与之对应的就是变量和常量。

2.变量的创建方式:数据类型 变量名 = 赋值。
eg:int age = 18; //创建整形变量并进行初始化

3.变量的命名
·>只能由字母(包括大写和小写),数字,下划线(-)组成
·>不能由数字开头
·>长度不能超过63个字符
·>变量名中区分大小写
eg:int age = 0;与int Age = 0是两个不同的变量
·>变量名不能使用关键字

4.变量的分类
·>全局变量
·>局部变量

#include <stdio.h>int main()
{int a = 10;//局部变量printf("%d\n", a);return 0;
}
#include <stdio.h>int a = 10;
//全局变量int main()
{printf("%d\n", a);return 0;
}
#include <stdio.h>int global = 2019;
//全局变量int  main()
{int local = 2018;int global = 2020;     //局部变量printf("%d\n",global); //当局部变量与全局变量名字冲突时,局部变量优先使用return 0;
}

5.变量的使用

#include <stdio.h>int main()
{int num1 = 0;int num2 = 0;int sum = 0;printf("请输入两个操作数:>");scanf("%d %d",&num1,&num2);     //从键盘中读取数据需要取出变量地址后进行存放sum = num1 + num2;printf("%d\n",sum);return 0;
}

变量的作用域与生命周期
·>作用域(scope)是程序设计概念,通常来说,一段程序代码中所用到的名字并不总是有效/可用的,而限定这个名字的可用性的代码范围就是这个名字的作用域。
·>局部变量的作用域是该局部变量所处的局部范围,全局变量的作用域是整个工程
·>变量的生命周期指的是变量的创建到变量的销毁之间的一个时间段
·>局部变量的生命周期是进入作用域生命周期开始,出了作用域生命周期结束。全局变量的生命周期是整个工程的生命周期

#include <stdio.h>int main()
{{int a = 100;//局部变量a的作用域仅限于此局部范围内,出了局部范围后将会显示变量a未定义printf("%d\n", a);//100}return 0;
}

#include <stdio.h>int g_a;//声明变量void test()
{printf("test:%d\n", g_a);
}int g_a = 2022;
//先定义后使用,防止编译器报错int main()
{printf("%d\n", g_a);test();return 0;
}
#include <stdio.h>int g_a = 2022;
//定义也是一种声明。
//全局变量的作用域是整个工程void test()
{printf("test:%d\n", g_a);
}int main()
{printf("%d\n", g_a);test();//调用函数return 0;
}
//add.c
int g_a = 2022;//test.c
#include <stdio.h>
extern int g_a;
int main()
{printf("%d\n", g_a);//假设全局变量g_a在另一个源文件中,若想使用,需要引用外部符号——externreturn 0;
}

·>字面常量

int main()
{'w';//字符类型字面值"abcdef";//字符串类型字面值3.14;//浮点数类型字面值1000;//整形类型字面值
}

·>const修饰的常变量

int main()
{const int num = 0;
//num仍旧是一个变量,只不过具有了常属性,不能被直接修改
//在不支持C99的编译器下不可以使用变长数组,即不可使用const修饰的变量来指定数组大小return 0;
}

·> #define定义常量和宏

#define M 100
#include <stdio.h>
int main()
{int arr[M] = { 0 };printf("%d\n", M);return 0;
}
#include<stdio.h>#define MAX(x,y) (x>y?x:y) int main()
{int a = 0;int b = 0;scanf("%d %d",&a,&b);int m = MAX(a,b);printf("%d\n",m);return 0;
}

·>枚举变量

 enum SEX                 {  MALE,FEMALE,SECRET};//定义枚举类型时,内部为枚举常量,常量的默认值为0,在创建时可以同时赋值#include  <stdio.h>int main(){enum SEX s1 = MALE;enum SEX s2 = FEMALE;enum SEX s3 = SECRET;printf("%d\n", s1);printf("%d\n", s2);printf("%d\n", s3);return 0;}
#include <stdio.h>enum Color
{RED,GREEN,BLUE
};int main()
{enum color c = BLUE;//颜色这种枚举类型所创建的变量printf("%d\n", RED);//0printf("%d\n", GREEN);//1printf("%d\n", BLUE);//2return 0;
}

五.字符串

由双引号引起来的一串字符称为字符串字面值,简称字符串。
注:字符串的结束标志是一个 \0 的转义字符。在计算字符串长度的时候 \0 是结束标志,不算作字符串的内容。

#include <stdio.h>int main()
{char ch1[4] = "abc";char ch2[3] = { 'a','b','c' };char ch3[4] = { 'a','b','c','\0' };printf("%s\n", ch1);     //abcprintf("%s\n", ch2);     //abc烫烫烫烫烫bcprintf("%s\n", ch3);     //abcreturn 0;
}
#include <stdio.h>
#include <string.h>int main()
{char arr1[13] = "hello world!";char arr2[4] = {'b','i','t','e'};char arr3[5] = "bite";                //字符串后默认存放了一个\0char arr2[4] = {'b','i','t','e','\0'};printf("%d\n",strlen(arr1));          //专门用来计算字符串的长度的库函数,需要包含头文件     printf("%d\n",strlen(arr2));printf("%d\n",strlen(arr3));         printf("%d\n",strlen(arr4));          return 0;
}
#include <stdio.h>
#include <string.h>int main()
{char ch1[4] = "abc";char ch2[3] = { 'a','b','c' };char ch3[4] = { 'a','b','c','\0' };int len1 = strlen(ch1);int len2 = strlen(ch2);int len3 = strlen(ch3);printf("%d\n", len1);     //3printf("%d\n", len2);     //随机值printf("%d\n", len3);     //3return 0;
}

六.选择语句

#include <stdio.h>
int main()
{int n = 0;printf("明天要上班吗?(0/1):>\n");scanf("%d",&n);if(1 == n){printf("明天要上班\n");}else{printf("明天不用上班\n");}return 0;
}

七.循环语句

#include <stdio.h>
int main()
{int line = 0;while (line <= 20000){printf("%d:仍要继续努力敲代码\n", line);line++;}if (line > 20000){printf("%d:可以去看一场电影了\n", line);}return 0;
}

八.函数

#include <stdio.h>
int Add(int x, int y)
{return(x + y);
}int main()
{int num1 = 0;int num2 = 0;printf("请输入两个操作数:>")scanf("%d %d", &num1, &num2);int sum = Add(num1, num2);       //函数的特点是简化代码,代码复用printf("sum = %d\n", sum);return 0;
}
#include <stdio.h>
int Add(int x, int y)
{int z = x + y;return z;
}int main()
{int num1 = 0;int num2 = 0;printf("请输入两个操作数:>")scanf("%d %d", &num1, &num2);int sum = Add(num1, num2);       printf("sum = %d\n", sum);return 0;
}

九.数组

 #include <stdio.h>int main(){int arr[10]={1,2,3,4,5,6,7,8,9,10};//数组用于存放一组相同类型的元素,是相同类型元素的集合;数组的每个元素都有下标,下标从0开始int i = 0;while( i < 10 ){  printf("%d ",arr[i]);i++;}printf("\n");return 0;}
#include <stdio.h>
int main()
{int i = 0;int arr[10] = {1,2,3,4,5,6,7,8,9,10};for(i = 0;i < 10;i++){printf("%d ",arr[i]);}printf("\n");return 0;
}

十.操作符

#include <stdio.h>
int main()
{int num1 = 0;int num2 = 0;scanf("%d %d",&num1,&num2);int c = num1 / num2 ;int d = num1 % num2 ;float a = 10.0 / 4;//当操作符两侧的操作数都是整数时执行整数除法,如果要执行浮点数除法,至少有一个操作数为浮点数return 0;
}
#include <stdio.h>
int main()
{int a = 10;float f = 20.0f;printf("%d\n",sizeof(int));//sizeof是操作符,用于计算变量或者数据类型所占空间的大小,单位是字节printf("%d\n",sizeof(a));printf("%d\n",sizeof(float));printf("%d\n",sizeof(f));return 0;
}
#include <stdio.h>int main()
{int a = 100;int b1 = a++;//后置++,先将a赋值给b,然后a再自增printf("a=%d b=%d\n", a, b1);//int b=a;a=a+1;int b2 = ++a;//前置++,先++,后使用//a=a+1;b=a;printf("%d %d\n", a, b2);return 0;
}
#include <stdio.h>int main()
{int a = 100;int b = a--;//b=a,a=a-1;printf("a=%d b=%d\n", a, b);int a = 100;int b = --a;//a=a-1;b=a;printf("a=%d b=%d", a, b);return 0;
}

十一.常见关键字

char ; short ; int ; long ; float ; double ; signed ; unsigned ; auto ; if ; else ; switch ; case ; break ; continue ; default ; typedef ; do ; while ; for ; extern ; enum ; const ; register ; goto ; return ; static ; sizeof ; volatile ; void ; union ; struct
关键字是c语言中预先设定好的,不可自行创建关键字

#include <stdio.h>int main()
{auto int age = 10;
}
#include <stdio.h>
typedef unsigned int uint;
int main()
{unsigned int age = 10;uint age2 = 20;printf("%d %d\n", age, age2);return 0;
}
#include <stdio.h>
void test()
{static int n = 0;   //局部变量n从栈区改至存放至静态区,作用域不变,生命周期延长。输出1~10n++;                //如果是全局变量被static修饰后,该全局变量只能在本源文件内使用,不能在其他源文件内使用   printf("%d ", n);  //一个函数被static修饰后,该函数只能在本源文件内使用,不能在其他源文件内使用。
}           int main()
{int n = 0;for(n = 0 ; n < 10;n++){test();}return 0;
}
#include <stdio.h>
int main()
{int a = 0;int ret = scanf("%d",&a);//scanf函数读取失败的时候会返回EOF//如果读取正常的话,返回的是读取到的数据的个数printf("ret = %d\n",ret);// 1printf("a = %d\n",a);    //输入值return 0;
}

十二.指针

指针变量用于存放变量的地址,所以指针变量的大小取决于所存放的地址的大小。在32位平台机器下(x86)大小为4字节,64位平台机器下(x64)机器下大小为8个字节。

#include <stdio.h>
int main()
{printf("%zd\n", sizeof(char*));printf("%zd\n", sizeof(short*));printf("%zd\n", sizeof(int*));printf("%zd\n", sizeof(double*));return 0;
}
#include <stdio.h>
int main()
{int num = 19;printf("%p\n",&num); //打印出的是该变量里最小的那个地址return 0;
}
#include <stdio.h>
int main()
{int num = 10;int* pa = &num;  //将变量num的地址存放至整型指针变量pa中存放,后续可以通过解引用的方式直接修改num的值*pa = 20;printf("%d\n", num);return 0;
}

十三.结构体

  • 结构体是C语言中非常重要的知识点,它使得C语言有能力描述更为复杂的对象。
  • 在C语言中有许多内置类型,例如:char ; short ; int ; long ; long long ; float ; double…,但这并不意味着所有的对象都可以被描述出来。当遇见更为复杂的对象时,C语言中也提供了自定义的数据类型,例如 struct 结构体;enum 枚举 ;union 联合体等 来描述复杂类型
#include<stdio.h>//定义一个学生类型
struct stu
{char name[20];char sex[3];int age;
};int main()
{struct stu s = {"zhangsan","男",20 };struct stu s2 = { "如花","女",19 };//结构体变量.成员名printf("%s\n",s2.name);printf("%s\n", s2.sex);printf("%d\n", s2.age);return 0;
}
#include<stdio.h>//定义一个学生类型
struct stu
{char name[20];char sex[3];int age;
};void Print(struct stu* ps)
{//结构体的指针变量->成员名printf("%s %s %d\n", (*ps).name, (*ps).sex, (*ps).age);printf("%s %s %d\n", ps->name, ps->sex, ps->age);
}int main()
{struct stu s = {"zhangsan","男",20 };struct stu s2 = { "如花","女",19 };Print(&s);return 0;
}

一篇重新带你认识:C语言相关推荐

  1. VBS带你领略脚本语言的快乐!(实战篇—刷字数)

    用VBS脚本刷爆搜狗输入法 前言   偶然一次打开了搜狗输入法的个人主页,看到这135万字,不禁想起当年高中时为了跟同学装逼,上课挂脚本刷字数的"光荣战绩",很快啊,我就在古老的硬 ...

  2. 速通C语言第一站 一篇博客带你初识C语言

    感谢佬们支持! 文章目录 前言 一.C语言的前世今生&&如何写C语言 二.初识C语言 1.  第一个C语言程序(万恶之源) 2.  数据类型 计算机中的单位 介绍各种类型 各数据类型的 ...

  3. 设计模式一网打尽,40余篇文章带你领略设计模式之美

    文章末尾附带GitHub开源下载地址. 该文章的最新版本已迁移至个人博客[比特飞],单击链接 设计模式一网打尽,40余篇文章带你领略设计模式之美 | .Net中文网 访问. 设计模式概述 20世纪80 ...

  4. 36篇博文带你学完opencv :python+opencv进阶版学习笔记目录

    基础版学习笔记传送门 36篇博文带你学完opencv :python3+opencv学习笔记汇总目录(基础版) 进阶版笔记 项目 opencv进阶学习笔记1: 调用摄像头用法大全(打开摄像头,打开摄像 ...

  5. c语言变量命名规则_带你学习C语言—变量

    在编写程序时,常常需要将数据存储在内存中,以便于使用这个数据或者修改这个数据的值.我们通常使用变量来存储数据,而且使用变量可以引用存储在内存中的数据,并随时根据需要对数据进行处理. 变量的概念 在程序 ...

  6. 一文带你入门go语言

    一文带你入门go语言 go/golang是一门google开发的编程语言,其代码简洁易读,天生支持并发,完美契合当今互联网生态. 目前Go语言已经⼴泛应用于人工智能.云计算开发.容器虚拟化.⼤数据开发 ...

  7. c 语言程序编辑,C语言程序编辑学习篇—编程者说之C语言

    谈及C语言,我想凡是学过它的朋友都有这样一种感觉,那就是"让我欢喜让我忧."欢喜的是,C语言功能非常强大.应用广泛,一旦掌握了后,你就可以理直气壮地对他人说"我是电脑高手 ...

  8. 乐鑫esp8266学习rtos3.0笔记第4篇:带你捋一捋微信公众号 airkiss 配网 esp8266 并绑定设备的过程,移植并成功实现在 esp8266 rtos3.1 sdk。(附带demo)

    本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1. Esp8266之 搭建开发环境,开始一个"hello ...

  9. 四篇文章带你快速入门Jetpck(中)之ViewModel,DataBinding

    文章目录 四篇文章带你快速入门Jetpck(中)之ViewModel,DataBinding Jetpack 官方推荐架构 ViewModel 添加依赖 创建ViewModel 初始化ViewMode ...

  10. 什么产品适合抖音广告?本篇文章带你来了解

    到底什么产品适合抖音广告?抖音广告类型的多样化使不计其数的广告主选择在抖音这个热门app上投放产品广告.不断有很多广告主提出疑问,自己的产品到底适不适合在抖音做营销.下面为您介绍适合在抖音做广告的产品 ...

最新文章

  1. LeetCode简单题之卡牌分组
  2. 使用Python批量删除windows下特定目录的N天前的旧文件实战:Windows下批量删除旧文件、清除缓存文件、解救C盘、拒绝C盘爆炸
  3. Python中的defaultdict函数
  4. fme中oracle转shp,FME中CASS扩展属性转SHP的方法
  5. scrapy 中不同页面的拼接_scrapy使用技巧总结
  6. 大数据阶段划分及案例单词统计
  7. C语言实现通讯录制作-链表学习案例(C/C++)
  8. LINGO使用教程(一)
  9. 使用ExtendSim指导全球大流行爆发期间的关键决策
  10. Sentaurus入门(2):器件仿真
  11. 【转帖】龙芯3A3000处理器深度评测:和Intel、AMD差距巨大
  12. 苹果计算机怎么隐藏应用,苹果电脑怎么隐藏界面图标
  13. 加州欧文大学计算机申请,加州大学欧文分校申请
  14. php 照片变成卡通照片,怎么把照片做成q版卡通 照片变q版卡通人物 q版卡通头像制作...
  15. 文件上传漏洞原理和利用
  16. 百度一键Root使用教程
  17. MAX7219芯片 共阴LED驱动器 详细介绍
  18. Matlab 读写入txt文件
  19. java excel导出 jxl_JAVA利用JXL导出/生成 EXCEL
  20. 游戏出海市场广阔,渠道差异及发行策略应受到企业关注

热门文章

  1. 技术分享 | 接口自动化测试中如何对xml 格式做断言验证?
  2. 字体大宝库:50款精美的免费细英文字体资源【上篇】
  3. 如何仅从 UiPath 中的数据表获取标题
  4. 巨杉数据库入围 IDC Innovator榜单,获评分布式数据库创新者
  5. 孤独源于过分的优越感,而优越感的另一面,则是自卑
  6. 专线网络与家庭宽带区别(基础篇)
  7. 关于flex布局和九宫格布局的实现
  8. 电子工程师踩过的这些坑,你踩过几个?
  9. Java 继承 与 抽象类
  10. OpenCV4学习笔记(76)——基于ArUco模块+QT实现增强现实(AR)