初识c语言必看(2)

一·前言

零基础小白,编写自己认为比较重要的最基础部分。(第二部分)

二·操作符

1·介绍

为了满足人们的需求,c语言中拥有多种操作符,使得应用起来方便快捷。

2·分类

(1)算术操作符(+, - ,*, / ,%)

~. / 除 除号两端如果为整型,执行的是整数除法,得出来的只有商,至少有一个是浮点型,才能执行浮点数出法。
~. %取模(取余) 返回值为余数,用取余这个操作符时,两边的操作数必须都是整型。其他操作符都可以用于整数和浮点数。

(2)移位操作符

(1) <<左移位操作符
(2) >>右移操作符

(3)位操作符(&,|,^)

~. 他们的操作数必须为整数

(4)赋值操作符(=)

~. 注意区分=和==,=是赋值,==是判断

(5)复合赋值符(+=,-=,*=,/=,%=)

比如
int x = 10;
x = x +10;可以改为x+=10;
其他道理一样

(6)单目操作符

~. !逻辑反操作(非的意思)
~. - 负值
~. +正值
~. & 取地址
~. sizeof 操作数的类型长度(单位是字节)
~. ~ 对一个数的二进制按位取反
~. * 间接访问操作符(解引用操作符)
~. (类型) 强制类型转换
~. – 前置,后置–
~. ++ 前置,后置++

(7)关系操作符

(>,>=,<,<=,!=,==)
==是用来判断相等的。

(8)逻辑操作符

(&& 逻辑与 ,|| 逻辑或)
&& || 只关注真假
&& 两边同时为真,才为真
|| 两边只要有一个假,就是假

(9)条件操作符

exp1?exp2:exp3
举例:a>b?a:b

(10) 逗号表达式

就我们平常用的(可以不看)
exp1,exp2,exp3,…,expn

(11)下标引用,函数调用,结构成员

下标引用[]
函数调用()
结构成员 .-> 和结构体有关

三·EOF详解

(1)EOF是文件结束标志,即end of file ,所代表的值为-1
(2)scanf函数如果读取正常,返回值为读取的数,如果读取失败,返回值为-1(EOF)。当想要停止scanf读取时,vs上需要三次ctrl+z(算是bug)结束读取,然后返回值为EOF(-1)

四·常见关键字

1·关键字列举

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 union unsigned void volatile while
c语言中提供了丰富的关键字,这些关键字都是语言本身预先设定好的,用户自己不能创造关键字。
(define不是关键字,是预处理指令)

2·分类

c语言中关键字共32个,可分为四类。

(1)变量数据类型关键字(14)

在这里插入图片描述

(2)九条基本语句所用到的关键字(12)

在这里插入图片描述

(3)存储类型的关键字(5)

在这里插入图片描述

(4)运算符关键字(sizeof)

运算符,计算表达式或数据类型占用的,内存的字节数。

3·举例介绍

(1)register

register:寄存器 可以建议计算机将数据放入不同的地方(只是建议)
为什么要这样,因为计算机中数据存放的位置不一样,那么使用时它的传输速度就不一样。下面是相关介绍
在这里插入图片描述
~. 这五个储存从上往下速度越来越快,造价越来越高,空间越来越小。
~. 以上的存储数据由CPU(中央处理器,简称CPU,作为计算机系统的运算和控制核心,是信息处理和程序运行的最终执行单元)处理运算。寄存器是有限储存容量的高速储存部件,它们可用来暂存指令,数据和位置。

(2) typedf

typedf:类型定义(重命名) 比如
//将unsigned int 重命名为uint_32, 所以uint_32也是一个类型名
typedef unsigned int uint_32;
int main()
{
//观察num1和num2,这两个变量的类型是一样的
unsigned int num1 = 0;
uint_32 num2 = 0;
return 0;
}

(3)static

static是用来修饰变量和函数的

  1. 修饰局部变量-称为静态局部变量
    结论:static修饰局部变量改变了变量的生命周期
    让静态局部变量出了作用域依然存在,到程序结束,生命周期才结束。
  2. 修饰全局变量-称为静态全局变量
    结论:一个全局变量被static修饰,使得这个全局变量只能在本源文件内使用,不能在其他源文件内使用。
  3. 修饰函数-称为静态函数
    结论:一个函数被static修饰,使得这个函数只能在本源文件内使用,不能在其他源文件内使用。

五·#define定义常量和宏

1.//define定义标识符常量
#define MAX 1000
2.//define定义宏
#define ADD(x, y) ((x)+(y))
#include <stdio.h>
int main()
{
int sum = ADD(2, 3);
printf(“sum = %d\n”, sum);
return 0;
}

六·选择和循环语句

1·选择语句

(1)if语句

if…else if…else if… else…(可以一直用else if)(如果用else代表是其他剩下的,所以else后边不用跟条件)

(2)switch语句

switch,case,default,break(之后整理的分支与循环里会详细说明)

2·循环语句

while循环,for循环,do…while循环

七·指针

1·介绍

(1)内存是电脑上特别重要的存储器,计算机中程序的运行都是在内存中进行的 。
(2)所以为了有效的使用内存,就把内存划分成一个个小的内存单元,每个内存单元的大小是1个字节
(3)为了能够有效的访问到内存的每个单元,就给内存单元进行了编号,这些编号被称为该内存单元的地址

2·理解

在这里插入图片描述
(1)变量是创建内存中的(在内存中分配空间的),每个内存单元都有地址,所以变量也是有地址的。
取出变量地址如下:
#include <stdio.h>
int main()
{
int num = 10;
#//取出num的地址
//注:这里num的4个字节,每个字节都有地址,取出的是第一个字节的地址(较小的地址)
printf(“%p\n”, &num);//打印地址,%p是以地址的形式打印
return 0;
}
在这里插入图片描述
(2)那地址如何储存,需要定义指针变量
int num = 10;
int &p;//p为一个整型指针变量
p = #
应用实例
#include <stdio.h>
int main()
{
int num = 10;
int *p = #
p = 20;
return 0;
}
在这里插入图片描述
(3)以整形指针举例,可以推广到其他类型,如:
#include <stdio.h>
int main()
{
char ch = ‘w’;
char
pc = &ch;
*pc = ‘q’;
printf(“%c\n”, ch);
return 0;
}

3·指针变量的大小

#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个字节。

八·结构体

结构体是C语言中特别重要的知识点,结构体使得C语言有能力描述复杂类型。
比如描述学生,学生包含: 名字+年龄+性别+学号 这几项信息。
这里只能使用结构体来描述了。
例如:
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)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值