【鹏哥C语言网课笔记】:初始C语言
目录
P1-初始C语言(1)
一.数据类型
二.变量的分类
①局部变量:
②全局变量:
三.变量的作用域和生命周期
P2-初始C语言(2)
一.常量
①字面常量
②const 修饰的常变量
③#define 定义的标识符常量
④枚举常量
二.字符串+转义字符+注释
①字符串
②转义字符
③注释
三.选择语句
四.函数
五.数组
六.操作符
P4-初始C语言(3)
一.常见关键字
关键字:register
关键字:signed,unsigned
关键字:typedef
关键字:static
二. #define定义常量和宏
三.指针
内存
P5-初始C语言(4)
结构体
P1-初始C语言(1)
一.数据类型
char //字符数据类型 ---%c
short //短整型
int //整型 ---%d
long //长整型 ---%ld
long long //更长的整型
float //单精度浮点数 ---%f
double //双精度浮点数 ---%lf
sizeof()获取数据在内存中所占用的存储空间,以字节为单位来计数,一个字节=8个比特位。
二.变量的分类
①局部变量:
定义在代码块({ })内部的变量,只能在定义的局部当中使用,并不是所有局部变量都放在main函数当中,放在main函数当中的变量是局部变量。
②全局变量:
定义在代码块({ })之外的变量,在哪里都能使用
当局部变量和全局变量的名字相同的时候,局部变量优先
C语言语法规定,变量要定义在当前代码块的最前面,否则可能会报错。
三.变量的作用域和生命周期
P2-初始C语言(2)
scanf是C语言提供的,scanf_s不是标准C语言提供的,是VS编译期提供的,不具有跨平台性。不建议因为使用VS编译期,把scanf替换成VS推荐的scanf_s
#define _CRT_SECURE_NO_WARNINGS 1 让警告失效
一.常量
①字面常量
②const 修饰的常变量
③#define 定义的标识符常量
④枚举常量
#include <stdio.h>
int main()
{//①字面常量演示3.14;//字面常量1000;//字面常量//②const-常属性//const 修饰的常变量,使变量不能进行变值const float pai = 3.14f; //这里的pai是const修饰的常变量pai = 5.14;//是不能直接修改的!// const int n = 10;// int arr[n] = {0}; 出错!不可以这样使用// const 修饰的常变量在C语言中只是在语法层面限制了变量,n不能直接被改变,但是n本质上还是一个变量的,所以叫常变量//③#define的标识符常量演示#define MAX 100int arr[MAX] = {0};printf("max = %d\n", MAX);//④枚举常量演示 一一列举//枚举关键字-enum//举例:性别:男,女,保密enum Sex //Sex是枚举类型
{MALE,FEMALE, //括号中的MALE,FEMALE,SECRET是枚举常量SECRET
};//enum Sex s = FEMALE;printf("%d\n", MALE);printf("%d\n", FEMALE);printf("%d\n", SECRET);//注:枚举常量的默认是从0开始,依次向下递增1的。默认MALE是0,FEMALE是1,SECRET是2//枚举常量不能更改,但是通过枚举类型创建出来的变量可以更改return 0;
}
二.字符串+转义字符+注释
①字符串
#include <stdio.h>
//下面代码,打印结果是什么?为什么?(突出'\0'的重要性)
int main()
{char arr1[] = "bit";char arr2[] = {'b', 'i', 't'};char arr3[] = {'b', 'i', 't',0};char arr4[] = {'b', 'i', 't','\0'};printf("%s\n", arr1);printf("%s\n", arr2);printf("%s\n", arr3);printf("%s\n", arr4);return 0;
}
//“abc”里包括'a' 'b' 'c' '\0'
//'\0'是字符串的结束标志,\0的ASCII值是0
#include<stdio.h>
#include<string.h>int main(){char arr1[] = "abc";char arr2[] = {'a', 'b', 'c'};printf("%d\n",strlen(arr1));printf("%d\n",strlen(arr2));return 0;
}
网课里鹏哥使用的VS,输出结果为3 15
我使用的dev c++,输出的是正确结果3 3,不知道是不是因为dev会自动忽略这个问题
②转义字符
转义字符 | 释义 |
\? | 在书写连续多个问号时使用,防止他们被解析成三字母词 |
\' |
用于表示字符常量' |
\" | 用于表示一个字符串内部的双引号 |
\\ | 用于表示一个反斜杠,防止它被解释为一个转义序列符 |
\a | 警告字符,蜂鸣 |
\b | 退格符 |
\f | 进纸符 |
\n | 换行 |
\r | 回车 |
\t | 水平制表符 |
\v | 垂直制表符 |
\ddd | ddd表示1-3个八进制的数字。如:\130 X |
\xdd | dd表示2个十六进制数字。如:\x30 0 |
例1:
C语言编译器会把这 ‘‘’ 一段单引号解析成前两个为一组,最后单出个单引号没地方放,就会报错,如果想要输出 ’ 这一个单引号,在这个单引号前加 \ ,即可。
例2:\ddd用法,(\xdd用法同理,将16进制转换成10进制,作为ASCII码值对应的字符)
③注释
三.选择语句
四.函数
五.数组
printf("%d\n",arr[4]); //下标的方式访问元素
六.操作符
操作符种类 | 操作符 | 作用 |
算数操作符 |
+ - * / %
|
|
移位操作符 |
>> <<
|
将数据看成32bit位的二进制,再按照要求数据左移右移 |
(2进制)位操作符 |
&(按位与) ^(按位异或) |(按位或)
|
将数据换成2进制后,使用位操作符的两个数对比每个彼此对应的二进制位 & :对应的二进制位都为1 时,则为1;否则为0 ^:相同,则为0; 不同,则为1 |:只要对应的二进制位有一个是1,结果就是1,同为0,才是0 |
赋值操作符 |
= += -= *= /= &= ^= |= >>= <<=
|
|
单目操作符 (只对一个变量进行操作) |
! 逻辑反操作
- 负值
+ 正值
& 取地址
sizeof 操作数的类型长度(以字节为单位)
~ 对一个数的二进制按位取反
-- 前置、后置--
++ 前置、后置++
* 间接访问操作符(解引用操作符)
(类型) 强制类型转换
|
|
双目操作符 (对两个变量进行操作) |
||
三目操作符 (对三个变量进行操作) |
条件操作符中的 ?和 : | |
关系操作符 |
>
>=
<
<=
!= 用于测试“不相等”
== 用于测试“相等”
|
|
逻辑操作符 |
&& 逻辑与
|| 逻辑或
|
|
条件操作符 |
exp1 ? exp2 : exp3
|
|
逗号表达式 |
exp1, exp2, exp3, …expN
|
|
下标引用、函数调用和结构成员 |
[] () . ->
|
sizeof()计算的是变量/类型所占空间的大小,单位是字节,一个整型占四个字节:
P4-初始C语言(3)
只要是整数,内存中存储的都是二进制的补码
正数的原码,反码,补码都相同
负数存的是补码
原码:直接是按照正负写出的二进制序列
反码:原码的符号位不变,其他位按位取反得到的
补码:反码+1
一.常见关键字
关键字:register
关键字:signed,unsigned
关键字:typedef
关键字:static
static修饰局部变量:
- 定义变量a不加static:
- 定义变量a时,前面加static
static修饰全局变量
改变了变量的作用域,让静态的全局变量只能在自己所在的源文件内部使用,出了源文件就没办法再使用了
- 定义全局变量时,前面不加static,可以正常运行:
- 定义全局变量时,前面加static,运行报错(g_val为无法解析的外部符号):
static修饰函数
改变了函数的链接属性,使外部链接属性变成了内部链接属性
- 定义函数时,不加static,可以正常运行:
- 定义函数时,加static,运行报错(无法解析的外部符号)
二. #define定义常量和宏
//define定义标识符常量,定义MAX的值为1000
#define MAX 1000//define定义宏
#define ADD(x, y) ((x)+(y))#include <stdio.h>
int main()
{int sum = ADD(2, 3);printf("sum = %d\n", sum);sum = 10*ADD(2, 3);printf("sum = %d\n", sum);return 0;
}
三.指针
内存
变量是创建内存中的(在内存中分配空间的),每个内存单元都有地址,所以变量也是有地址的。 取出变量地址如下:
#include <stdio.h>
int main()
{int num = 10;#//取出num的地址//注:这里num的4个字节,每个字节都有地址,取出的是第一个字节的地址(较小的地址)printf("%p\n", &num);//打印地址,%p是以地址的形式打印return 0;
}
int* p(可以理解成 p的类型是int*,但是*p告诉我们p是一个指针变量,指向的类型是int)
#include <stdio.h>
int main()
{char ch = 'w';char* pc = &ch;*pc = 'q';printf("%c\n", ch);return 0;}输出q
#include <stdio.h>
//指针变量的大小取决于地址的大小
//32位平台下地址是32个bit位(即4个字节)
//64位平台下地址是64个bit位(即8个字节)
int main()
{printf("%d\n", sizeof(char *));printf("%d\n", sizeof(short *));printf("%d\n", sizeof(int *));printf("%d\n", sizeof(double *));return 0;
}指针大小在32位平台是4个字节,64位平台是8个字节
P5-初始C语言(4)
结构体
struct Stu
{char name[20];//名字int age; //年龄char sex[5]; //性别char id[15]; //学号
};
//打印结构体信息
struct Stu s = {"张三", 20, "男", "20180101"};
//.为结构成员访问操作符
printf("name = %s age = %d sex = %s id = %s\n", s.name, s.age, s.sex, s.id);
//->操作符
struct Stu *ps = &s;
printf("name = %s age = %d sex = %s id = %s\n", ps->name, ps->age, ps->sex, ps- >id);
【鹏哥C语言网课笔记】:初始C语言相关推荐
- C语言第一课:初始C语言
目录 前言 一.自我介绍和简介 二.初始C语言 2.1 何为C语言 2.2 第一个C语言程序 2.2.1 头文件的解释 2.2.2 main函数 2.2.3 printf函数 三.C语言当中的数据类型 ...
- 【鹏哥C语言网课笔记】初始结构体
目录 结构体类型的声明 结构的基础知识 结构的声明 结构成员的类型 结构体变量的定义和初始化 结构体成员访问 结构体变量访问成员 结构体指针访问指向变量的成员 结构体传参 结构体类型的声明 结构的基础 ...
- 【鹏哥C语言网课笔记】初识C语言
目录 1.数据类型 2.变量.常量 2.1 变量/常量的含义与创建 2.2 变量的分类 2.3 变量的作用域和生命周期 2.3.1 作用域 2.3.2 生命周期 2.4 常量 2.4.1 字面常量 2 ...
- 【鹏哥C语言网课笔记】习题总结1
目录 1 习题1:将输入的字符进行打印 2 getchar清理缓冲区 3 计算1!+2!...+n! 4 在有序数组中查找具体某个数字 5 编写代码多个字符从两端向移动,向中间汇聚 6 编写代码,模拟 ...
- 【鹏哥C语言网课笔记】初识指针
目录 一.指针是什么? 二.指针和指针类型 三.野指针 指针未初始化 指针越界 指针指向的空间释放 如何规避野指针 四.指针运算 指针+-整数 指针-指针 指针的关系运算 五.指针和数组 六.二级指针 ...
- 学堂在线部分网课笔记---Web设计与应用
学堂在线部分网课笔记 Web设计与应用 第六章 敏捷的前端框架 6.2.1 bootstrap响应式布局(一) 容器 非固定宽度 固定宽度 Viewport viewport的作用是什么? width ...
- 吴恩达ChatGPT网课笔记Prompt Engineering——训练ChatGPT前请先训练自己
吴恩达ChatGPT网课笔记Prompt Engineering--训练ChatGPT前请先训练自己 主要是吴恩达的网课,还有部分github的prompt-engineering-for-devel ...
- 大学计算机基础网课笔记,网课笔记怎么做?hiter教你!
原标题:网课笔记怎么做?hiter教你! 转眼间 线上开课已一月有余 大家对 网课已相当熟悉了 小编随机调查了部分同学的网课状态 发现我工同学上网课毫不含糊 做起笔记来也是相当精彩 下面就随小编一起来 ...
- c语言作业系统输出超限,C语言网Online Judge系统支持语言和编译说明
Online Judge系统支持语言和编译情况: 语言 编译器 语言版本 编译参数 C gcc 4.6.3 C99 gcc Main.c -o Main -Wall -lm –static -std= ...
- R语言小白学习笔记3—R语言读取数据
R语言小白学习笔记3-R语言读取数据 笔记链接 想说的话 学习笔记3-R语言读取数据 3.1 读取CSV文件 3.1.1 read_delim函数 3.1.2 fread函数 3.2 读取Excel数 ...
最新文章
- 【Flutter】shared_preferences 本地存储 ( 简介 | 安装 shared_preferences 插件 | 使用 shared_preferences 流程 )
- 9.6-OOP语言 对接口和抽象类的理解
- 论文阅读:Multi-scale orderless pooling of deep convolutional activation features
- Updatepanel与Jquery合用时的问题解决
- 90%的程序员都没有完全回答对 Cookie 和 Session 的区别?
- SpringSecurity分布式整合之认证服务配置文件编写和测试
- Do not mutate vuex store state outside mutation handlers.
- oracle备份恢复演练,记一次生产库的impdp恢复演练
- 力扣(LeetCode)46
- python爬虫知识点总结(十六)PySpider框架概述和用法详解
- paip.提升性能------服务器环境及编程语言架构选择
- 微信小程序引入iconfont实现添加自定义颜色图标
- Prelude CC 2019 for Mac附激活补丁 v8.1.0中文版
- 每周分享第 37 期
- Spring Securiy +aouth2.0+jwt整合,实现鉴权登录
- 手把手教你申请计算机软件著作权(4)——资料邮寄
- https请求,报错Could not establish trust relationship for the SSL/TLS secure channel
- 减员云售前可降本增效
- PDF转换器for mac
- 用矩形法求定积分,分别求sin x dx ,cos x dx,e exp x;