C语言学习第1、2、3天
本章重点
- 什么是C语言
- 第一个C语言程序
- 数据类型
- 变量、常量
- 字符串+转义字符+注释
- 选择语句
- 循环语句
- 函数
- 数组
- 操作符
- 常见关键字
- define定义常量和宏
- 指针
- 结构体
以上简单描述,详细后续学习
什么是C语言
语言:人与人相互交流的工具
计算机语言:人与计算机交流的工具,C/C++/JAVA/python/GO
C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。C语言能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。尽管C语言提供了许多低级处理的功能,但仍然保持着跨平台的特性,以一个标准规格写出的C语言程序可在包括类似嵌入式处理器以及超级计算机等作业平台的许多计算机平台上进行编译。
第一个C语言程序
本人使用C-Free 5.0学习C语言,使用GCC编译器,C99标准。
//写代码
//1.写出主函数(main函数)
/*
如何执行,C语言是从主函数的第一行开始执行的
所以C语言代码中得有main函数入口
*/
//代码:在屏幕上打印扶欢清雅
//printf - 函数库 - 在屏幕上打印信息
//printf 的使用需要引用头文件- #include <stdio.h>#include <stdio.h>int main(){printf("扶欢清雅\n");return 0;
} //一个工程中可以有多个.c文件
//一个工程中main函数有且仅有一个
数据类型
//数据类型
//计算机语言-写程序-解决生活问题
//必须有能力来描述生活中问题
/*
char //字符数据类型
short //短整型
int //整形
long //长整型
long long //更长整形
float //单精度浮点数
double //双精度浮点数
*/
//a-'a'-字符a/*int main() {//字符数据类型char ch = 'a';//整形 int age = 20;//短整型 short num = 10; return 0;
}
*/
//类型大小
#include <stdio.h>
int main(){printf("Hello World\n");printf("扶欢清雅\n");printf("%d\n",100);//打印一个整型 -%d//sizeof-关键字-操作符-计算类型或者变量所占空间大小printf("%d\n",sizeof(char)); //1printf("%d\n",sizeof(short)); //2printf("%d\n",sizeof(int)); //4printf("%d\n",sizeof(long)); //4printf("%d\n",sizeof(long long)); //8printf("%d\n",sizeof(float)); //4printf("%d\n",sizeof(double)); //8return 0;
}
变量、常量
生活中的一些数据:
有些数据不能变:血型,性别,圆周率
有些数据可变:工资、年龄、体重
C语言怎么描述:常量-不能改变的量
变量-能改变的量
定义变量的方法
int main(){//创建一个变量//类型 变量名 = 值; 类型 变量名;int age = 20;double weight = 75.3;age = age + 1; weight = weight - 10;printf("%d\n",age);printf("%lf\n",weight);return 0;
}
//%d - int
//%f - float
//%lf - double
变量的分类
局部变量
全局变量
//全局变量-{}外部定义的
int a = 100;
int main(){//局部变量-{}内部定义的int a = 10;//当局部变量和全局变量名字冲突的情况下,局部优先 printf("%d\n",a);return 0;
}
变量的使用
//写一个代码求两个正数的和
//scanf()输入函数
int main(){int a = 0;int b = 0;int sum = 0;scanf("%d %d",&a,&b);sum = a + b;printf("sum = %d\n",sum);return 0;
}
编辑于2022年1月10日
变量的作用域和生命周期
作用域(scope),程序设计概念,通常来说,一段程序代码中所用到的名字并不总是有效/可用的,而限定这个名字的可用性的代码范围就是这个名字的作用域。
变量的生命周期:是指一个变量被创建并分配内存空间开始,对该变量被销毁并清除其所占用内存空间的过程
#include <stdio.h>
//作用域和生命周期
//局部变量的作用域:就是变量所在的局部范围
//全局变量的作用域:整个工程 //声明变量
extern int g_val;
int g_val = 2022;
int main(){printf("扶欢清雅\n");printf("g_val = %d\n",g_val);{int a = 10;printf("a = %d\n",a);printf("g_val = %d\n",g_val);}//printf("a = %d\n",a);printf("g_val = %d\n",g_val);return 0;
}
//生命周期
//变量的创建和销毁之间的时间段//局部变量的生命周期:进入局部范围生命开始,出局部生命结束
//全局变量的声明周期: 程序的生命周期
int main(){{int a = 10;printf("%d\n",a); }return 0 ;
}
常量
1.字面常量
//1.字面常量/*3.114;10;'a';"abcd";*/
2.常变量
//2.const修饰的常变量int num = 10;//变量num = 20;printf("%d\n",num);//20const int num2 = 10;//常变量 - 具有常属性(不能被改变的属性) num2 = 20;//报错 int arr[10] = {0};//10个元素int n = 10;int arr2[n] = {0};//报错,n是变量的 const int n2 = 10;//n2是常变量 int arr3[n2] = {0};//报错,n2还是变量的
3.#define定义的标识符变量
//3.#define 定义的标识符常量#define MAX 10int n = MAX;printf("%d\n",MAX);//10
4.枚举常量
//4.枚举常量
//可以一一列举的常量
//性别
enum Sex{MALE,FEMALE,SECRET, //这种枚举变量的未来可取值 a = 10 //赋初值
};int main(){enum Sex s = MALE;MALE = 3;//报错 printf("%d\n",MALE); //0printf("%d\n",FEMALE); //1printf("%d\n",SECRET); //2return 0;
}
编辑于2022年1月11日
字符串+转义字符+注释
字符串
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//字符串就是一串字符----用双引号括起来的一串字符串
int main(){"abdc";char arr[] = "Hello FH-QY";//字符数组 - 数组是一组相同类型的元素//字符串在结尾的位置隐藏了一个\0的字符,\0为字符串的结束标志 char arr1[] = "abc";char arr2[] = {'a','b','c'};//不同编译器编译不同,根据编译器为准 ,这个数组整体在内存存储的字符数量未知 printf("%s\n",arr1);printf("%s\n",arr2);//可能会打出另外乱码 ,因为不知道哪里有\0 //验证字符串长度 - - string length - - strlen() - - string.hprintf("%d\n",strlen("abc"));//3 ,不包含\0 printf("%d\n",strlen(arr1));//3 ,不包含\0 printf("%d\n",sizeof(arr1));//4 ,包含\0 printf("%d\n",strlen(arr2));//随机值 因为不知道哪里有\0 return 0;
}
验证字符串末尾\0
转义字符
int main(){printf("c:\test\test.c\n");//c: est est.c//转义字符 printf("c:\test\test.c??)\n");// ??) 转译为 ] - 三字母词,此代码正常打印??)非]/*\? - 多个连续问号出现防止解析为三字母词\' - 用于表示字符常量'\" - 用于表示字符常量"\\ - 用于表示字符常量\,并防止被认为转义序列符\a - 警告字符,凤鸣\b - 退格符\f - 进纸符 \n - 换行符 \r - 回车符 \t - 水平制表符 \v - 垂直制表符\ddd - ddd表示1~3个八进制数,\130 - X\xdd - dd表示2个十六进制数,\x30 - 0 */printf("%d\n",strlen("c:\test\328\test.c"));//14
}
注释
注释用来解释复杂代码
//C++注释风格
/**/C注释风格 - 不支持嵌套注释
选择语句
int main(){int input = 0;//输入的值 printf("加入扶欢清雅:>");printf("那要好好学习吗(1/0)?>:");scanf("%d",&input);if(input == 1)printf("好offer\n");elseprintf("卖红薯\n");
}
循环语句
int main(){int line = 0;//循环 while(line<30000){printf("写代码\n");line++;}if(line == 30000)printf("好offer\n");
}
函数
int Add(int x,int y){return x+y;
}
int main(){int num1 = 0;int num2 = 0;scanf("%d %d",&num1,&num2);//计算方式 int sum = num1 + num2;//函数方式sum = Add(num1,num2); printf("%d\n",sum);
}
数组
int main(){//数组 - 一组相同类型的元素的集合//10个整形1-10保存int arr[10] = {1,2,3,4,5,6,7,8,9,10};char ch[5] = {'a','b','c'};//不完全初始化,剩余的默认为0//访问arr,通过数组下标,数组下标从0开始计数 int i = 0;while(i<10){printf("%d\n",arr[i]);i++;}
}
操作符
算术操作符:+ - * / %
移位操作符:>> <<
位操作符:&按位与 |按位或 ^按位异或
赋值操作符:= += -= *= /= &= ^= |= >>= <<=
单目操作符:
- ! 逻辑反操作
- - 负值
- + 正值
- & 取地址
- sizeof 操作数的类型长度(以字节为单位),不是函数可以省略括号
- ~ 对一个数的二进制按位取反,计算机中内存存储的是补码
- -- 前置、后置--
- ++ 前置、后置++ 前置,先自增后运算,后置,先运算后自增
- * 间接访问操作符(解引用操作符)
- (类型) 强制类型转化
关系操作符:> >= < <= != ==
逻辑操作符:&&(逻辑与) ||(逻辑或)
条件操作符(三目运算符): exp1 ? exp2 : exp3,epx1成立exp2运算,exp1不成立exp3运算。
逗号表达式:逗号隔开的一串表达式,从左往右计算,结果为最后一个表达式的结果
下标引用、函数调用和结构成员:[] () . ->
int main(){int a = 9 / 2;float b = 9 / 2;float c = 9 / 2.0;int d = 9 % 2;//取模 printf("%d\n",a);//4printf("%f\n",b);//4.000000printf("%f\n",c);//4.500000printf("%d\n",d);//1int e = 2;int f = e<<1;//移动的是二进制位 printf("%d\n",f);//4}
常见关键字
//C语言提供的关键字
//1.C语言提供的,不能自己创建关键字
//2.关键字不能作为变量名
auto | 声明自动变量,多声明局部变量并省略 |
short | 声明短整型变量或函数 |
int | 声明整型变量或函数 |
long | 声明长整型变量或函数 |
float | 声明浮点型变量或函数 |
double | 声明双精度变量或函数 |
char | 声明字符型变量或函数 |
struct | 声明结构体变量或函数 |
union | 声明共用数据类型 |
enum | 声明枚举类型 |
typedef | 用以给数据类型取别名 |
const | 声明只读变量 |
unsigned | 声明无符号类型变量或函数 |
signed | 声明有符号类型变量或函数 |
extern | 声明变量是在其他文件正声明,static修饰全局变量使其只能在源文件使用,全局变量的外部链接性变成内部链接属性 |
register | 声明寄存器变量 |
static | 声明静态变量,改变变量的生命周期(本质上改变了变量的存储类型) |
volatile | 说明变量在程序执行中可被隐含地改变 |
void | 声明函数无返回值或无参数,声明无类型指针 |
if | 条件语句 |
else | 条件语句否定分支(与 if 连用) |
switch | 用于开关语句 |
case | 开关语句分支 |
for | 一种循环语句 |
do | 循环语句的循环体 |
while | 循环语句的循环条件 |
goto | 无条件跳转语句 |
continue | 结束当前循环,开始下一轮循环 |
break | 跳出当前循环 |
default | 开关语句中的“其他”分支 |
sizeof | 计算数据类型长度 |
return | 子程序返回语句(可以带参数,也可不带参数)循环条件 |
#define定义常量和宏
//define是一个预处理指令
//define定义符号
#define MAX 1000
//define定义宏
#define ADD1(X,Y) X+Y
#define ADD2(X,Y) ((X)+(Y))
int main(){printf("%d\n",MAX);printf("%d\n",ADD1(2,3));//5printf("%d\n",4*ADD1(2,3));//11 4*ADD1(2,3)=4*2+3printf("%d\n",4*ADD2(2,3));//20 4*ADD2(2,3)=4*((2)+(3))
}
指针
int main(){int a = 10;//a在内存中要分配4个字节空间printf("%p\n",&a); //0060FF24int* pa = &a;//pa用来存放地址的,成为指针变量,*说明pa使指针变量,//int说明pa执行的对象是int类型char ch = 'w';char* pch = &ch; *pa = 20;//*解引用操作,*pa就是通过pa里的地址,找到aprintf("%d\n",a); //指针大小,指针大小取决于地址的存储大小 printf("%d\n",sizeof(char*)); //4printf("%d\n",sizeof(int*)); //4printf("%d\n",sizeof(short*)); //4printf("%d\n",sizeof(long*)); //4printf("%d\n",sizeof(long long*));//4 printf("%d\n",sizeof(float*)); //4printf("%d\n",sizeof(double*)); //4
}
结构体
//结构体可以让C语言创建新的类型
//创建一个学生
struct Stu{char name[20];int age;double score;
};
//创建一个书的类型
struct Book{char name[20];float price;char id[30];
};int main(){struct Stu s = {"张三",20,89.8};//结构体的创建和初始化printf("%s %d %lf\n",s.name,s.age,s.score);//.操作 张三 20 89.800000struct Stu * ps = &s;printf("%s %d %lf\n",(*ps).name,(*ps).age,(*ps).score);//.操作 张三 20 89.800000printf("%s %d %lf\n",ps->name,ps->age,ps->score);//->操作 张三 20 89.800000
}
编辑于2022.01.17
C语言学习第1、2、3天相关推荐
- C++语言学习(十二)——C++语言常见函数调用约定
C++语言学习(十二)--C++语言常见函数调用约定 一.C++语言函数调用约定简介 C /C++开发中,程序编译没有问题,但链接的时候报告函数不存在,或程序编译和链接都没有错误,但只要调用库中的函数 ...
- 微软提出CLIPBERT:通过稀疏采样的视频语言学习
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 论文是学术研究的精华和未来发展的明灯.小白决心每天为大家带来经典或 ...
- c语言错误的等式,C语言学习中几个常见典型错误分析.docx
C语言学习中几个常见典型错误分析 打开文本图片集 摘要:C语言是一门优秀,应用广泛的结构化程序设计语言,是中职计算机.机电和电子技术等专业一门理论和实践相结合的课程,教学实践中,学生常觉得c语言难学, ...
- 二级C语言学习宝典下载,二级C语言学习宝典
二级C语言学习宝典app是一款专注于全国二级计算机等级C语言学习所开发的应用软件,它能够给你带来全新的功能板块,让你轻松掌握超多优质的考试训练,享受到手机端做题刷题的畅快体验,让你轻松备考,而且在该软 ...
- php7做了哪些优化,PHP语言学习之PHP7做了哪些优化
本文主要向大家介绍了PHP语言学习之PHP7做了哪些优化,通过具体的内容向大家展示,希望对大家学习php语言有所帮助. 一 zval使用栈内存 在Zend引擎和扩展中,经常要创建一个PHP的变量,底 ...
- C语言学习趣事_之_大数运算_加法
C语言学习趣事_大数运算_之加法 1.引子 在C语言中,因为预定义的自然数类型的大小是有上下限度的,这就决定了在进行数的运算的时候,必然受到限制,同时因为C语言是最接近汇编的一种程序设计语言,并 ...
- 攻破c语言笔试与机试难点,如何攻破C语言学习、笔试与机试的难点.doc
如何攻破C语言学习.笔试与机试的难点 第一节??C语言编程中的几个基本概念1.1? ?? ?#include< >与#include" "? 1.? ?#include ...
- c语言 浮点型数据怎么存放,C语言学习之浮点型数据存储
C语言学习之浮点型数据 浮点数 浮点型数据分为单精度浮点型(float)和双精度浮点型(double). 单精度(float) 单精度浮点值 取值范围:1.2E-38 到 3.4E+38 精度:6 位 ...
- r语言electricity数据集_R语言学习10-查看数据
当我们处理一个新的数据集的时候,第一件事就是要对数据做一个了解.数据的格式是什么?数据的维度是多少?变量名是什么? 变量如何存储? 是否缺少数据? 数据中是否有任何缺陷? 本次课将学习如何使用R的内置 ...
- 51 时间片系统 纯c语言,51单片C语言学习.doc
51单片C语言学习 51单片机C语言学习第三课 [ 作者:明浩????转贴自:电子制作实验室????点击数:1067????更新时间:2004-10-2????文章录入:admin ]减小字体 增大字 ...
最新文章
- 介绍一些好用的ArcToolbox工具(默认ArcGIS没有)
- iOS 5.1.1 设备不能安装AdHoc问题版本号
- Mac 10.10下安装MySQL5.6.21提示安装失败
- php重定向函数是什么,php中url重定向的方法
- php异常处理的好处,php异常处理方法是什么
- Linux命令之chmod命令
- 失控的滴滴:以为问题出在流程,其实问题出在人
- 惊爆:江民公司官方网站今日被黑
- 哪些窗体置顶得程序是怎么实现得?
- 基于PHP的学生作业管理系统
- css3动画数字变化,css3动画的更深层次的探究(矩阵变换)
- 《大象--Thinking in UML》已经发售!简介及目录
- 利用重复性渐变编写邮件线
- 宋鸿兵在《货币战争5》中谈到的美国医疗
- AutoMapper 的使用
- Angular(一)
- 猿团推出免费开发(成品)APP 助力移动互联网创业
- java+代码实现+流星雨,js代码实现流星雨 - osc_zls6dx9i的个人空间 - OSCHINA - 中文开源技术交流社区...
- DELL R440服务器安装Centos8.0
- html页面显示透视效果图,用css来实现透视效果