2025年初始C语言

初始C语言C 语言概述 计算机编程语言 应用于底层开发 简易的方式编译 处理地基存储器 产生少量的机器码 不需要任何运行环境支持便能运行的编程语言 良好的跨平台性 是一门面向过程的编程语言 数据类型 char 字符数据类型 1 字节 short 短整型 2 字节 int 整型 4 字节

大家好,我是讯享网,很高兴认识大家。

C语言概述:

  1. 计算机编程语言,应用于底层开发。
  2. 简易的方式编译,处理地基存储器,产生少量的机器码,不需要任何运行环境支持便能运行的编程语言。
  3. 良好的跨平台性。
  4. 是一门面向过程的编程语言。

数据类型

char //字符数据类型 1字节 short //短整型 2字节 int //整型 4字节 long //长整型 4字节 long long //更长的整型 8个字节 float //单精度浮点数 4字节 double //双精度浮点数 8字节 

讯享网

``注:`存在这么多类型为了更加丰富的表达生活中的值。

变量,常量

常量:不可变的值。
变量:变化的值

变量的分类
  1. 全局变量
  2. 局部变量

注:当全局变量和局部变量同名的时候,局部变量优先使用。

变量的作用域和生命周期
  1. 作用域:限定的可用性的代码范围。
    (1) 局部变量的作用域是变量所在的局部范围。
    (2) 全局变量的作用域是整个工程。
  2. 生命周期: 变量的生命周期是指变量的创建到变量的销毁的一个时间段
    (1) 局部变量的生命周期是:进入作用域生命周期开始,出作用域生命周期结束。
    (2) 全局变量的生命周期是:整个程序的生命周期。
变量的定义
讯享网int a;//内存空间就开辟好了 

2: 写入对应的数据

a=100; 

初始化:空间开辟好,里面的数据与生俱来是某个值

讯享网int a = 100; //初始化 

赋值:第二次进行主动赋值

a = 200; //赋值 
常量
1.字面常量
2.const 修饰的常变量

const修饰的变量定义被修饰的变量不能直接修改

3.define 定义的标识符常量

宏定义:见名知义

讯享网#define MAX 100 
4.枚举常量
enum Sex{ MALE, FEMALE, SECRET }; 

字符串+转义字符+注释

字符串
  1. 由双引号引起来的一串字符称为字符串字面值,或简称字符串。


2. 字符串的结束标志是一个\0的转义字符。在计算字符串长度的时候\0是结束标志,不算做字符串的内容。
3. 字符串本身默认以’\0’结尾。
4. strlen():字符串的长度不包含反斜杠’\0’。
5. sizeof():字符串的大小包含反斜杠’\0’。
6. "\c"打印就只是c字符,sizeof求大小就是2。

转义字符

在这里插入图片描述
讯享网

注释
  1. 代码中不需要的代码可以直接删除,也可以注释掉。
  2. 代码中有些代码比较难懂,可以加一个注释文字。
    注: ctrl+k+c批量化注释 ctrl+k+u批量化取消

选择语句

  • if…else…
  • switch语句

循环语句

  • while语句
  • for语句
  • do…while语句

操作符

算数运算符
讯享网+ - * % 
移位操作符
>> << 
位操作符
讯享网& ^ | 
赋值操作符
= += -= *= /= &= ^= >>= <<= 
单目操作符
讯享网! 逻辑反操作 - 负值 + 正值 & 取地址 sizeof 操作符的类型长度(以字节为单位) ~ 对一个数的二进制按位取反 -- 前置,后置-- ++ 前置,后置++ * 间接访问操作符(解引用操作) (类型) 强制类型转换 
关系操作符
> >= < <= != 用于测试不相等 == 用于测试相等 
逻辑操作符
讯享网&& 逻辑与 || 逻辑或 
条件操作符
exp1 ? exp2 : exp3 
下标引用,函数调用和结构成员
讯享网[] () . -> 

常见关键字

在这里插入图片描述

关键字typedef

typedef是类型定义,即类型重命名。

关键字static
static是用来修饰变量和函数的
  1. 修饰局部变量-静态局部变量:
    static修饰局部变量改变了变量的生命周期,让静态局部变量出了作用域依然存在,到程序结束,生命周期结束。
//代码1 #include <stdio.h> void test() { int i=0;//每次调用函数都初始化 i++; printf("%d",i); } 

在这里插入图片描述

讯享网//代码2 #include<stdio.h> void test(){ //static修饰局部变量 static int i = 0;//只初始化一次,之后调用函数跳过此句 i++; printf("%d ", i); } int main(){ int i = 0; for (i = 0; i < 10; i++){ test(); } return 0; } 

在这里插入图片描述
static修饰局部变量的时候有两个作用:

  1. 作用域:在代码块有效,使用static有效作用域不改变
  2. 生命周期:临时性。static修饰的变量的生命周期是全局属性。
  3. int i=0;//初始化,局部范围作用完释放,再次作用继续执行改代码进行初始化。
  4. static int i=0;//初始化。任何一个变量都只会作用一次。第二次不会再执行此代码直接跳过。
  5. 修饰全局变量-静态全局变量:
    一个局部变量呗static修饰,使得这个全局变量只能在本源文件内使用,不能再其他源文件内使用。
    //代码1 运行正常 //add.c int g_val=2018; //test.c #include<stdio.h> extern int g_val; int main(){ printf("%d\n",g_val); return 0; } 
    讯享网//代码2 编译错误 //add.c static int g_val=2018; //test.c #include<stdio.h> int main(){ printf("%d\n",g_val); return 0; } 
  6. 修饰函数-静态函数:
    一个函数被static修饰,使得这个函数只能在本源文件内使用,不能再其他源文件内使用。
    第一种情况
    //代码1 //add.c int Add(int x,int y) { return x+y; } //test.c #include<stdio.h> extern int add(int x,int y);//可有可无,函数声明默认是extern int main() { printf("%d\n",add(2+3)); } 
    讯享网//代码2 //add.c static int add(int x,int y) { return x+y; } //test.c #include<stdio.h> int main() { printf("%d\n",add(2,3)); } 

    第二种情况

    //代码1 //print.c #include<stdio.h>//这里加头文件因为printf()函数在stdio.h的库函数中 void show() { printf("Hello World!"); } //test.c #include<stdio.h> int main() { show(); } 
extern声明函数和变量:
  1. 声明变量:
讯享网extern int a; 

在变量定义前加extern关键字表示声明一个变量但不定义它 。它表示"这只是一个声明,它的定义在别的地方",关键字extern,它表示变量是在文件以外定义的,或在文件后面部分才定义.

  1. 声明函数:
extern int func1(int length, int width); 

这种声明方式和一般的func1()声明方式一样。因为没有函数体,编译器必定把它作为声明而不是函数定义。extern关键字对函数来说是多余的,可选的。C语言的设计者并不要求函数的声明使用extern,这可能有些令人遗憾;如果函数声明也要求使用extern,那么在形式上与变量声明更加一致,从而减少了混乱。

define 定义常量和宏

讯享网#define ADD(x,y) x+y #include<stdio.h> int main(){ int sum = 0; sum = 2 * ADD(3, 4);//只做替换,不做计算,替换完结合整个表达式运算 printf("sum=%d", sum);//输出是10不是14 return 0; } 

指针

内存

内存是电脑重要的存储器,计算机中所有的程序的运行都在内存中运行的。
为零有效的使用内存,把内存划分成一个小小的内存单元,每个内存单元的大小是1个字节。
为了能有效访问内存的每个单元,就给内存单元进行了编号,这些编号被称为该内存单元的地址。
在这里插入图片描述

总结:

  • sizeof()用来计算数据类型字节大小的
  • 程序暂停(无其他意义):
#include<windows.h>  int main(){ 
    System("pause"); } 
  • C函数的默认返回值类型是整型,但是在编译时必须写函数的返回值类型
  • 函数只有在被调用的时候才会运行,否则不会运行。内部的所有临时变量都不存在。
  • 函数调用的时候如果传参了要发生形参实例化(实参传给形参产生临时变量),函数调用要形成参数的拷贝。
  • 数组是相同类型的集合。
  • sizeof()不是函数(sizeof后面的圆括号不是必须的加上只是增加界限可读型,sizoef(int)可以执行,sizeof int无法执行,函数名后面必有括号且不能为某个类型值)
  • 变量可以多次声明只能定义一次
  • 在一个文件中定义了变量,则在另一个文件中只需声明就可以使用。
  • 全局变量一般可以跨文件使用,但是 static修饰全局变量时,改变量只能在本文件中使用,生命周期不变,作用范围发生改变。
  • 内存:以一个字节为一个小方格堆积
    指针:方便查找,给内存中的每个字节带上编号,提高查找效率。编号在计算机中我们称之为地址,一般的地址具有具有明显的指向性,我们一般把地址叫做指针。
    通俗的说:没有指针将遍历查找效率低,而且还不知道查找的值是否是要的值
  • 指针和指针变量 其实并未区分
    指针就是地址
    指针变量是一个变量,变量存放的就是地址
  • 在32位平台下,指针大小都是4个字节
  • int a=10; //a代表的是空间 左值
    int b=a;//a代表的是内容,b代表的是空间 右值
  • 指针解引用:对指针解引用,代表指针所指向的目标
    int a=10;
    int *p=&a;
    printf("%d",*p);//p解引用,对p 解引用表示p所指向的a
小讯
上一篇 2025-03-12 11:31
下一篇 2025-03-22 15:07

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/121521.html