C语言入门00——预备篇

1.什么是C语言?

C语言是人和计算机交流的一种通用的语言

1.1什么是程序?

广义上讲,为了实现一个特定的目标而预先设计的一组可操作的工作步骤,称之为一个程序。

程序就是系统可以识别的一组有序的指令。存储在磁盘上,被加载到内存中执行。

1.2程序语言的发展

机器语言-----》汇编语言-----》高级语言(C/C++ Java C#)

1.3.计算机数据表示

数值数据----》十进制 二进制 十六进制(0x) 八进制(0)

非数值数据------》文字 图像 符号 语音 逻辑信息也是以0 1形式存储。

 2.ANSIC是什么?

C语言美国国家标准语法,C11标准

 3.写代码的编译器

VS2019 - 集成开发环境

4.怎么写程序?

1.新建项目

2.新建源文件.c(头文件.h)

3.编写代码

#include <stdio.h>  //头文件

int main()    //函数名

{

    printf("林")  //函数体

    return 0; 

}
5.数据类型

char        //字符数据类型
short       //短整型
int         //整形
long        //长整型(比int长   sizeof(long)>=sizeof(int)在64位是8,在32位是4 )
long long   //更长的整形  C99
float       //单精度浮点数
double      //双精度浮点数

数据的长度在limits.h文件中定义的

6.数据类型的长度使用的函数

sizeof(),用zu来接收sizeof()返回的数

int main()
{
    printf("%zu\n",sizeof(char));       // 1bit
    printf("%zu\n",sizeof(short));      // 2bit
    printf("%zu\n",sizeof(int));        // 4bit
    printf("%zu\n",sizeof(long));       // 4bit     sizeof(long)>=sizeof(int)
    printf("%zu\n",sizeof(long long));  // 8bit 
    printf("%zu\n",sizeof(float));      // 4bit
    printf("%zu\n",sizeof(double));     // 8bit
} 
/*
    (指针)地址的内存大小  64位是8字节
                           32位是4字节
*/
7.计算机的单位
bit   比特位            8个bit = 1个字节
byte  字节              
kb                      1024字节 = 1kb
mb                      1024kb = 1mb
gb                      1024mb = 1gb
tb
pb

1个int类型的数据占4比特位,
1g等于2^30字节


 1G     2^30 * 8       1     2^30 * 8
---- = ----------  =  --- * ----------
1int     4 * 8         4         8

可以得到2^30个int类型的数据占4G

约等于10亿int类型的数据占4G
8.变量与常量

不变的量叫常量

9.局部变量与全局变量

大括号外面的变量叫全局变量

10.输入函数&输出函数

scanf()函数&printf()函数

scanf("%d %d",&num1,&num2);
%d代表整型   %u(无符号整数  )
%c代表字符
%s代表字符串
%f代表浮点型float
%lf代表浮点型double
%zu代表接受sizeof()
%p代表16进制地址 


int n = printf("HELLO world!");
//printf的返回值是字符串的个数(会加上\n),如果遇到错误的时候返回负数

printf("\n%d\n",n); //这里可以在前面加上\n,也能达到换行
n = 12

char password[20] = {};
scanf("%s",password)  //这里并没有取地址符号,因为数组名本身就是地址
11. 变量的作用域和生命周期

局部变量的作用域在大括号内部,生命周期也在局部变量所在的局部范围

全局变量在整个代码中都是作用域,生命周期为整个代码

extern  int a; //声明来自外部的变量
int a =100 ;
int main ()
{
   int  a = 10;
   print ("%d",a);
   return 0;
}
//输出的结果为10,是局部变量的,局部优先
12.常量
  • 1.字面常量
30;
3.14;  //数字常量
'w';   //字符常量
"abc"; //字符串常量
1.176e+10;//指数常量
-1.176E-8;
  • 2.const修饰的常变量
//const 修饰的本质上是变量,但是不能修改

const int a =10; //不可以修改
int arr[a] ={0}; //这里也是不行的,这里a还是变量
  • 3.#define定义的标识符常量
#include <stdio.h>
#define Max 100
int main()
{
    printf("%d",MAX);
    int a = MAX;
    return 0;
}
  • 4.枚举常量
enum Color
{
    //枚举常量
     RED,
     GREEN,
     BLUE
};
int main()
{
    //三原色
    enum Color c = RED; //这里c就是个变量
    return 0; 
}
13.字符串

双引号引起来的就是字符串

char arr[10] = "acjhsk"; //这里arr只有10个位置,但当不在10位置写的的时候,会自动根据后面内容分配内存
//arr[]的内容最末尾会有一个'\0'
char arr1[] = {"abcdef"};                   //7个字符
char arr2[] = {'a','b','c','d','e','f'};    //6个字符 
//这里arr1[]的末尾会有'\0',而arr2[]却没有'\0'
printf(%s\n,arr1);
printf(%s\n,arr2);
//这里结果为
//abcdef
//abcdef....    遇到内存空间中的'\0'才停止 
int len1 = strlen(arr1);    //得到的结果不包括'\0',结果为6
int len = strlen(arr2);     //得到的结果跟  //abcdef....    遇到内存空间中的'\0'才停止  一样 🤷‍♀️


求字符串长度
有两种方法,一种是: size = sizeof(arr)/sizeof(arr[0]) - 2;  sizeof会将\0,也看成元素
另一种是: size = strlen(arr) - 1;



在将数组当作参数传给形参时,一般都是将数组名(数组首地址)传过去,但一定还要传数组个数
14.字符串相关函数

求字符串长度的函数

#include <string.h>
strlen();


char arr1[3] = {'a','b','c'}
char arr2[4] = {'a','b','c'}
printf(%d\n,strlen(arr1));  //输出结果不确定
printf(%d\n,strlen(arr2));  //输出结果为3,因为arr2为不完全初始化



//空格也是字符


//程序输出什么?
#include <stdio.h>
int main()
{
    printf("%d\n", strlen("abcdef"));
    // \62被解析成一个转义字符
    printf("%d\n", strlen("c:\test\628\test.c"));
    return 0;
}


\628是\62(8进制)和8,所以有两个字符 

如:\ddd d d d表示1~3个八进制的数字。 如: \130 表示字符X
    \xdd d d表示2个十六进制数字。 如: \x30 表示字符0

比较两个字符串是否相等

strcmp(字符串1,字符串2); 
//比较两个字符串是否相等
 if(strcmp(字符串1,字符串2)==0);
//表示两个字符串相等
15.转义字符
\n(换行)
\?(三字母词 ??( ==[)
\'(就是一个单引号)
\"(就是一个双引号)
\\(就是一个斜杆)
\t(水平制表符  Tab)
\a(蜂鸣)
\b(退格符)
\f(进纸符)
\v(垂直制表符)
\ddd(ddd表示1~3个八进制的数字)  \130 代表X
\xdd(dd表示2个十六进制的数字)   \x061 代表a
16.ASCLL编码

0 -- 数字0
'0' -- 字符0  -ASCLL值为48
'\0' --字符 -ASCLL值为0
EOF  --end of file -- 文件结束标准 -ASCLL值为-1 
17.注释
//单行注释  C++引出的
/*
多
行    原始的C语言注释  注意嵌套注释,当/*遇到*/,就认为注释结束
注
释
*/
18. 选择语句
if
else if
else
switch()
19.循环语句
while
do   while
for
20.顺序结构

C语言结构化程序设计

21.函数
数据类型 函数名(参数)

{

    函数体

}
22.数组

数组是一组相同类型的元素的集合



int arr[10] = {1,2,3,4,5,6,7,8,9,10};

//通过下表访问元素,从0开始 arr[8] = 9;

int arr2[3]; //arr2只有3个元素

int arr3[10] = {0};

int arr4[] = {}  //错误代码
23.操作符
@算术操作符
 +
 -
 * 
 /  int a = 7 / 2 = 3   |   float c = 7 / 2.0 = 3.5
 %   取余,式子两边只能是整数
 
@移位操作符(涉及二进制运算)
<<
>>

@位操作符
&
^ 
|

@赋值操作符
= 
+=   a = a + 3  等于 a += 3
-= 
*= 
/= 
&= 
^= 
|= 
>>= 
<<=

@单目操作符
! 逻辑反
-  负值
+  正值
&  取地址
sizeof  操作数的类型长度
       数组元素个数 = sizeof(arr)/sizeof(arr[0]) 
~  对一个数二进制取反
--  前置(先减减后使用)、后置(先使用后减减)
++  前置(先加加后使用)、后置(先使用后加加)
*   间接访问操作符(解引用操作符)
(类型)    强制类型转换  (int)3.14 等于 3

@关系操作符
<
>
<=
>=
!=
==

@逻辑操作符
||
&&

@条件操作符(三目操作符)
exp1 ?a:b;
exp1成立就等于a,否则等于b

@逗号表达式(从左往右依次计算)
exp1,exp2,exp3...

@下标引用,函数调用操作符,结构体成员调用
[]           ()              . -> 
24.常见关键字
auto                const                  double          float         int               short             struct(结构体) void
break               continue               else            for           long              signed(有符号的) switch          volatile
case                default (switch里使用) enum (枚举)      goto (跳出)  register(寄存器)sizeof             typedef (类型重命名) while
char                do                     extern(声明外部符号的)        if               return     static(静态的)    union(联合体、共用体)

define不是关键字

typedef unsigned int uint;  //起别名
typedef struct Node
{
    int data;
    struct Node* next;
}Node;                  //别名位Node
使用:   Node n 等于 struct Node n;

栈区(出了作用域就销毁)(压弹):局部变量  
堆区()(漏斗):
静态区(程序结束才销毁):全局静态变量,局部静态变量

static可以修饰变量可以修饰函数
//修饰局部变量  增加局部变量的使用周期(将变量放在静态区),经过改变会保持不变  static int a = 1 ;
//修饰全局变量  当不加static关键字的时候,别的文件可以通过extern关键字使用该外部变量(全局变量具有外部链接的属性);  加上static(全局变量的外部链接属性,变成内部链接属性)
//修饰函数  跟修饰全局变量很像,一个函数也是有外部链接属性的

void(无返回)

register --- 寄存器
寄存器变量 register int num = 3;

define定义常量和宏
#define Max 100          //定义标识符常量
 #define ADD(x,y)  ((x)+(y))   //定义宏
25.变量命名规则.
  • 1.有意义
  • 不能是关键字
  • 不能以数字开头,可以使用字母,下划线和数字
26.内存

内存被分为一个个内存单元,每个内存都有一个编号

一个内存单元是一个字节:byte

32位电脑可以管理2^32个字节=4294967296 byte = 4194304kB =4096 MB = 4GB

内存单元的编号 -》 地址 -》 地址也被称为指针

27.指针

存放指针或地址的变量就叫指针变量

int *  p = &a ; //这里p就是指针变量,p储存的是a的指针  ,p 的类型是int * ,代表p指向的a是int 类型的

*p 的意思是通过p存放的地址,找到p所指向的对象,*p就是p指向的对象




int * p1,p2,p3;   //这里p1是指针,p2,p3全是整数
int *p1,*p2,*p3;  //这里p1,p2,p3全是指针




typedef int* intp;

intp p1,p2,p3; //这里p1,p2,p3全是指针



#define INTP int*
INTP p1,p2,p3; 这里p1是指针,p2,p3全是整数

不管什么类型的指针,它的大小都是4; //32位机器 x86

不管什么类型的指针,它的大小都是8; //64位机器 x64

28.结构体

表示复杂对象的时候,可以自定义类型------------结构体

把单一类型组合在一起

//学生
struct Stu
{
  char name[20];
  int age;
  char sex[10];
  char tele[12];   
};        //这里不占内存,只有创建对象的时候才占空间

void print(*ps)
{
  printf("%s %d %s %s \n",(*ps).name,(*ps).age,(*ps).sex,(*ps).tele);
  printf("%s %d %s %s \n",ps->name,ps->age,ps->sex,ps->tele); //这两行代码一摸一样 
}


int main ()
{
 struct Stu s = {"zhanglin", 18,"man","123456789123"};
 
 // printf("%s %d %s %s \n",s.name,s.age,s.sex,s.tele); //结构体对象.成员名
    print(&s);
 return 0;     
}
29.windows环境下的函数
Sleep(1000);//休眠1000ms
30.windows环境下的系统操作函数
system("cls"); //清屏函数
31.bool类型
bool flag = 0;//<stdbool.h> flag不是0(false)就是1(true) sizeof(bool) = 1

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值