一篇重新带你认识:C语言
文章目录
- 一.什么是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的地址存放至整型指针变量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语言相关推荐
- VBS带你领略脚本语言的快乐!(实战篇—刷字数)
用VBS脚本刷爆搜狗输入法 前言 偶然一次打开了搜狗输入法的个人主页,看到这135万字,不禁想起当年高中时为了跟同学装逼,上课挂脚本刷字数的"光荣战绩",很快啊,我就在古老的硬 ...
- 速通C语言第一站 一篇博客带你初识C语言
感谢佬们支持! 文章目录 前言 一.C语言的前世今生&&如何写C语言 二.初识C语言 1. 第一个C语言程序(万恶之源) 2. 数据类型 计算机中的单位 介绍各种类型 各数据类型的 ...
- 设计模式一网打尽,40余篇文章带你领略设计模式之美
文章末尾附带GitHub开源下载地址. 该文章的最新版本已迁移至个人博客[比特飞],单击链接 设计模式一网打尽,40余篇文章带你领略设计模式之美 | .Net中文网 访问. 设计模式概述 20世纪80 ...
- 36篇博文带你学完opencv :python+opencv进阶版学习笔记目录
基础版学习笔记传送门 36篇博文带你学完opencv :python3+opencv学习笔记汇总目录(基础版) 进阶版笔记 项目 opencv进阶学习笔记1: 调用摄像头用法大全(打开摄像头,打开摄像 ...
- c语言变量命名规则_带你学习C语言—变量
在编写程序时,常常需要将数据存储在内存中,以便于使用这个数据或者修改这个数据的值.我们通常使用变量来存储数据,而且使用变量可以引用存储在内存中的数据,并随时根据需要对数据进行处理. 变量的概念 在程序 ...
- 一文带你入门go语言
一文带你入门go语言 go/golang是一门google开发的编程语言,其代码简洁易读,天生支持并发,完美契合当今互联网生态. 目前Go语言已经⼴泛应用于人工智能.云计算开发.容器虚拟化.⼤数据开发 ...
- c 语言程序编辑,C语言程序编辑学习篇—编程者说之C语言
谈及C语言,我想凡是学过它的朋友都有这样一种感觉,那就是"让我欢喜让我忧."欢喜的是,C语言功能非常强大.应用广泛,一旦掌握了后,你就可以理直气壮地对他人说"我是电脑高手 ...
- 乐鑫esp8266学习rtos3.0笔记第4篇:带你捋一捋微信公众号 airkiss 配网 esp8266 并绑定设备的过程,移植并成功实现在 esp8266 rtos3.1 sdk。(附带demo)
本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 1. Esp8266之 搭建开发环境,开始一个"hello ...
- 四篇文章带你快速入门Jetpck(中)之ViewModel,DataBinding
文章目录 四篇文章带你快速入门Jetpck(中)之ViewModel,DataBinding Jetpack 官方推荐架构 ViewModel 添加依赖 创建ViewModel 初始化ViewMode ...
- 什么产品适合抖音广告?本篇文章带你来了解
到底什么产品适合抖音广告?抖音广告类型的多样化使不计其数的广告主选择在抖音这个热门app上投放产品广告.不断有很多广告主提出疑问,自己的产品到底适不适合在抖音做营销.下面为您介绍适合在抖音做广告的产品 ...
最新文章
- LeetCode简单题之卡牌分组
- 使用Python批量删除windows下特定目录的N天前的旧文件实战:Windows下批量删除旧文件、清除缓存文件、解救C盘、拒绝C盘爆炸
- Python中的defaultdict函数
- fme中oracle转shp,FME中CASS扩展属性转SHP的方法
- scrapy 中不同页面的拼接_scrapy使用技巧总结
- 大数据阶段划分及案例单词统计
- C语言实现通讯录制作-链表学习案例(C/C++)
- LINGO使用教程(一)
- 使用ExtendSim指导全球大流行爆发期间的关键决策
- Sentaurus入门(2):器件仿真
- 【转帖】龙芯3A3000处理器深度评测:和Intel、AMD差距巨大
- 苹果计算机怎么隐藏应用,苹果电脑怎么隐藏界面图标
- 加州欧文大学计算机申请,加州大学欧文分校申请
- php 照片变成卡通照片,怎么把照片做成q版卡通 照片变q版卡通人物 q版卡通头像制作...
- 文件上传漏洞原理和利用
- 百度一键Root使用教程
- MAX7219芯片 共阴LED驱动器 详细介绍
- Matlab 读写入txt文件
- java excel导出 jxl_JAVA利用JXL导出/生成 EXCEL
- 游戏出海市场广阔,渠道差异及发行策略应受到企业关注