当前位置:主页 > 查看内容

初识C语言

发布时间:2021-05-24 00:00| 位朋友查看

简介:初识C语言 本章节的笔记只是对C语言的基础知识的一个小概括 详细的讲解笔记后续会细讲 一、C语言的概念 C语言就是一门通用的计算机语言广泛应用于底层开发。 二、第一个C语言程序 # include stdio.h int main ( ) { printf ( hello world\n ) ; return 0 ; }……

初识C语言

本章节的笔记只是对C语言的基础知识的一个小概括

详细的讲解笔记后续会细讲

一、C语言的概念

C语言就是一门通用的计算机语言,广泛应用于底层开发

二、第一个C语言程序

#include <stdio.h>
int main()
{
    printf("hello world\n");
    return 0;
}

说明:

  1. #include <stdio.h>是该程序的头文件,因为该函数运用到了printf()函数,所以需要引头文件。
  2. 接下来是一个main()函数,C语言有规定,一个完整的C语言程序由一个或多个函数组成,必须有且只有一个main()函数,其可以出现在程序任何位置,程序由此开始执行,也结束于此。
  3. printf()是一个标准输出函数。
  4. return 0的作用是向操作系统返回一个零值,表示程序正常执行完毕。

三、数据类型

类型名称

  • char 字符数据类型
  • short 短整型
  • int 整型
  • long 长整型
  • long long 更长的整形
  • float 单精度浮点数
  • double 双精度浮点数
  • unsigned int 无符号整型
  • unsigned short 无符号短整型
  • unsigned long 无符号长整型
  • 以及更多

格式控制

  • %c 字符
  • %hd 短整型
  • %d 整型
  • %s 字符串
  • %f 单精度浮点数
  • %lf 双精度浮点数
  • %p 地址格式
  • %x 十六进制
  • %o 八进制

类型的大小

#include <stdio.h>
int main()
{
    printf("%d\n",sizeof(char));
    printf("%d\n",sizeof(short));
    printf("%d\n",sizeof(int));
    printf("%d\n",sizeof(long));
    printf("%d\n",sizeof(long long));
    printf("%d\n",sizeof(float));
    printf("%d\n",sizeof(double));
    printf("%d\n",sizeof(long double));
    return 0;
}

结果:

在这里插入图片描述

说明:

关于sizeof()的说明
(1)sizeof()的括号内的内容是不进行计算的
(2)sizeof()是运算符不是函数
(3)sizeof()运算符有以下两种格式
	1.用于求得表达式的值所占内存的字节数,其格式如下:
		sizeof 表达式
	2.用于求得某种数据类型的量所占内存的字节数,其格式如下:
		sizeof (表达式)

类型的使用

char ch = 'w';
float weight = 101.5;
int salary = 20000;

四、常量、变量

常量、变量的概念

数学中常数的概念:常数是指固定不变的数值,比如圆周率、真空光速等。

数学中变量的概念:变量是指没有固定的值,可以改变其值,有字母符号来表示,比如y=f(x),x是自变量,y是因变量。

计算机中常量的概念:常量是指在程序运行过程中其值不能改变的量,比如数值和字符值本身就是常量。

计算机中变量的概念:变量是指在程序运行期间其值可以改变的量,比如前面的int a,a就是变量。

定义变量的方法

int age = 150;
float weight = 45.5f;
char ch = 'w';

变量的分类

  • 局部变量
  • 全局变量
#include <stdio.h>
int global = 2019;//全局变量
int main()
{
    int local = 2018;//局部变量
    int global = 2020;//局部变量
    printf("global = %d\n",global);
    return 0;
}

总结:

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

变量的使用

#include <stdio.h>
int main()
{
    int a=0,b=0,sum=0;
    printf("请输入两个操作数:>");
    scanf("%d%d",&a,&b);//输入函数
    sum = a + b;
    printf("sum = %d\n",sum);//输出函数
    return 0;
}

说明:scanf()等函数使用时存在不安全,若使用VS提供的函数则会存在跨平台障碍,固应在源文件第一行写

#define _CRT_SECURE_NO_WARNINGS 1

由此来忽略函数存在不安全的警告或错误。

使默认有这句话的话应该打开VS2019的文件位置??Program Files (x86)??Microsoft Visual Studio??2019??Professional??在搜索框内搜vcprojectitems并点??右击newc++file,用Notepad++写上那句话并保存就可以每次默认忽略不安全问题。

变量的作用域和生命周期

作用域

作用域概念:一段程序代码中所用到的名字并不总是有效/可用 的 而限定这个名字的可用性的代码范围就是这个名字的作用域。

  1. 局部变量的作用域是变量所在的局部范围。
  2. 全局变量的作用域是整个工程。在工程的另一个文件里用到该全局变量时需要进行申明,就需要用到extern关键字,比如extern int global;

生命周期

生命周期概念:变量的创建到变量的销毁之间的一个时间段

  1. 局部变量的生命周期是:进入作用域生命周期开始,出作用域生命周期结束。
  2. 全局变量的生命周期是:整个程序的生命周期。

常量

常量的分类

  • 字面常量
  • const修饰的常变量
  • #define定义的标识符常量
  • 枚举常量
#include <stdio.h>
#define MAX 5+5//#define定义的 标识符常量,但凡MAX出现,那就相当于5+5(不是10)
enum Sex//枚举常量的应用,enum Sex就是一个类型
{
    MALE,
    FEMALE,
    SECRET
};
int main()
{
    52.4;//字面常量
    const float a = 5;
    //const 修饰的常量,经此常变量a将不可改变(a本质上仍然是变量,不可以放在数组的[]中),不然会报错
    return 0;
}

五、字符串、转义字符、注释

字符串

字符串是由一对" "括起来的字符序列(包括转义字符),其结束标志是\0,计算字符串长度的时候 \0 是结束标志,不算作字符串,但是会占内存一个字节。

#include <stdio.h>
//打印字符
int main()
{
    char arr1[] = "Hello";
    char arr2[] = {'H','e','l','l','o'};
    printf("%s\n",arr1);//正常打印
    printf("%s\n",arr2);//会有乱码,因为字符打印唯有遇到\0才会停止
    return 0}

转义字符

转义字符的概念:以’'开头的特殊字符序列,也是字符常量的一种,内存中占一个字节

转义字符释义
\‘用于表示字符常量’
\“用于表示一个字符串内部的双引号
\\用于表示一个反斜杠,防止它被解释为一个转义序列符。
\?在书写连续多个问号时使用,防止他们被解析成三字母词
\a警告字符,蜂鸣
\b退格符
\f进纸符
\n换行
\r回车
\t水平制表符
\v垂直制表符
\dddddd表示1~3个八进制的数字。\130 就是X
\xdddd表示2个十六进制数字。\x30 就是0

注释

注释用于不需要的代码,可以注释掉或者代码比较难懂,可以加注释

分格:

1./*xxxxxx*/  缺陷:不能嵌套注释
2.//xxxxxxxx  可以注释一行也可以注释多行,推荐

六、选择语句

#include <stdio.h>
int main()
{
    int a = 3,b = 5;
    if(a > b)
        printf("%d",a);//运用if-else语句,输出较大值
    else
        printf("%d",b);
    return 0;
}

七、循环语句

  • while 语句
  • for 语句
  • do…while语句
//while循环的实现
#include <stdio.h>
int main()
{
    int i = 0;
    while(i < 10)
    {
        printf("%d",i);
        i++;
    }
    return 0;
}

八、函数

#include <stdio.h>
int Add(int a,int b)
{
    return a + b;
}
int main()
{
    int a = 0,b = 0,sum = 0;
    scanf("%d %d",&a,&b);
    sum = Add(a,b);
    printf("%d",sum);
    return 0;
}

函数的特点就是简化代码,方便代码的重复使用

九、数组

数组的概念:一组相同类型元素的集合

数组的定义

int arr[10] = {1,2,3,4,5,6,7,8,9,10}
  • 数组可以不完全定义,未定义的就算0
  • 数组的[ ]中不可以是变量
  • 数组的下标从0开始

数组的使用

#include <stdio.h>
int main()
{
    int i = 0;
    int arr[10] = {1,2,3,4,5,6,7,8,9,10};
    while(i<10)
    {
        printf("%d ",arr[i]);
    }
    return 0;
}

十、操作符

算术操作符 例如:+ - * / %

移位操作符 例如:>> <<

位操作符 例如:& ^ |

赋值操作符 例如:= += -= *= /= &= ^= != >>= <<=

单目操作符 例如:! - + & sizeof – ++ ~ (类型)

关系操作符 例如:> >= < <= != ==

逻辑操作符 例如:&& ||

条件操作符 例如:exp1 ? exp2 : exp3(exp1条件为真则执行exp2,为假则执行exp3)

逗号表达式 例如 :exp1, exp2, exp3, …expN(从左向右计算,整个表达式结果是最后一个表达式的结果)

下标引用、函数调用和结构成员 例如:[] () . ->

十一、常见关键字

C语言提供的关键字,不能自己创建关键字

关键字不能做变量名

关键字作用关键字作用
auto声明自动变量extern声明变量是在其他文件正声明
short声明短整型变量或函数register声明寄存器变量
int声明整型变量或函数static声明静态变量
long声明长整型变量或函数volatile说明变量在程序执行中可被隐含地改变
float声明浮点型变量或函数void声明函数无返回值或无参数,声明无类型指针
double声明双精度变量或函数if条件语句
char声明字符型变量或函数else条件语句否定分支(与 if 连用)
struct声明结构体变量或函数switch用于开关语句
union声明共用数据类型case开关语句分支
enum声明枚举类型for一种循环语句
typedef用以给数据类型取别名do循环语句的循环体
const声明只读变量while循环语句的循环条件
unsigned声明无符号类型变量或函数goto无条件跳转语句
signed声明有符号类型变量或函数continue结束当前循环,开始下一轮循环
break跳出当前循环default开关语句中的“其他”分支
sizeof计算数据类型长度return子程序返回语句(可以带参数,也可不带参数)循环条件

简单介绍几个:

  1. typedef

    typedef 类型定义,就是对类型的重命名

    typedef unsigned int u_int;
    //将unsigned int重命名为u_int,u_int变成了一个类型名
    int main()
    {
        unsigned int num1 = 0;
        u_int num2 = 0;//这一句起的作用和上一句是一样的
        return 0;
    }
    
  2. static

  • static修饰局部变量

    改变了局部变量的生命周期,本质上是改变了变量的存储类型,从存储在栈区到存储到静态区。

  • static 修饰全局变量

    使得这个全局变量只能在自己所在的源文件内部可以使用,其他源文件不能使用。

  • static修饰函数

    使这个函数只能在本源文件内使用,不能在其他源文件内使

    十二、#define 定义常量和宏

    #define MAX 100//define 定义标识符常量
    #define ADD(x,y) ((x)+(y))//define 定义宏
    #include <stdio.h>
    int main()
    {
        int sum = ADD(2,3);//5
        sum = 10*ADD(2,3);//50
        return 0;
    }
    

    十三、指针

    #include <stdio.h>
    int main()
    {
        int num = 10;
        int*ps = num;//num的地址存在了指针变量ps里
        *ps = 20;//解引用ps,ps指向变量num,因此可以来改变num中的值
        return 0;
    }
    

    指针大小在32位平台是4个字节,64位平台是8个字节

    十四、结构体

    #include <stdio.h>
    struct Stu
    {
        char name[20];
        int age;
        char sex[5];
    };
    int main()
    {
        struct Stu s = {"张三",20,"男"};//结构体的创建和初始化
        struct Stu*ps = &s;
        printf("%s %d %s",s.name,s.age,s.sex);//结构体变量.成员变量
        printf("%s %d %s",ps->name,ps->age,ps->sex);//结构体指针->成员变量名
        return 0;
    }
    
;原文链接:https://blog.csdn.net/weixin_46103589/article/details/115499005
本站部分内容转载于网络,版权归原作者所有,转载之目的在于传播更多优秀技术内容,如有侵权请联系QQ/微信:153890879删除,谢谢!

推荐图文


随机推荐