重新写一下自己学C语言中记的笔记

上个学期因为因为加入了学校教官队,还有各种各样的事情,导致博客没怎么写过,现在开始重新补一下。然后因为之前写博客就巨细无遗的把所有内容都写下来,感觉没有必要,时间成本也比较高,现在就把各个知识点,我记的写下来。

C语言知识基础总括

C语言是一门面向过程的计算机编程语言。

C语言程序由函数和语句组成,其中mian函数是主函数是程序的入口,有且仅有一个。

C语言中最简单的数据类型包括整型、实型(浮点型)、字符型。

常量

生活中不变的量在C语言中称为常量,变的量称为变量。

常量分为以下4种:字面常量、const修饰的常变量、#define定义的标识符常量、枚举常量。

枚举常量eg:

enum Sex

{

    MALE,//0

    FEMALE,//1

    SECRET//2

};

从0开始,往下递增。

字符串

字符串放在数组之中(C语言没有字符串类型),用双引号引起来的是字符串。

strlen 求字符串长度的函数,不包括结束字符(null)。

sizeof 是一个单目操作符,计算变量所占内存空间的。

strlen的返回类型是无符号整型。

对于sizeof而言,因为缓冲区已经用已知字符串进行了初始化,其长度是固定的,所以sizeof在编译时计算缓冲区的长度。也正是由于在编译时计算,因此sizeof不能用来返回动态分配的内存空间的大小。

操作符

% 取模操作符,只能用于整型

& 按位与操作符,遇假则假

| 按位或操作符,遇真则真

^ 按位异或操作符,相同则假,相异则真

&& 逻辑与(并且)

|| 逻辑或(或者)

只要是整数,内存中储存的都是二进制的补码

正数的原码,反码,补码都相同

负数的 原码是直接按照正负写出的二进制序列

           反码是原码的符号位不变,其他按位取反

           补码是反码加一

逗号表达式是从左往右执行,整个表达式的结果是最后一个表达式的结果

关键字  

auto——自动,定义自动变量,自动创建,自动回收,所有局部变量都为自动变量(一般省略auto)

const——常属性,修饰变量和指针

extern——声明外部符号,(如果要使用外部文件的全局变量,需用extern声明)

register——寄存器

signed——有符号的

unsigned——无符号的

static——静态的

typedef——类型定义,重定义

typedef unsigned int u_int;
//之后代码中,可以用u_int代替unsigned int ,减轻工作量

register:寄存器关键字

在计算机的存储中:

寄存器
高速缓存

内存

硬盘
网盘

从下往上,空间越小,造价越高,速度越快。

register int a =10;//建议把a放入寄存器

寄存器不能取地址

static:静态的,修饰局部变量、全局变量、函数变量。

#include
void test()
{
    static int a = 1;//每一次调用的a,都是上一次函数留下的,并不会重置
    a++;
    printf("%d",a);
}

int main()
{
    int i = 0;
    while(i<10)
    {
        test();
        i++;
    }
    return 0;
}

static修饰局部变量:static修饰局部变量的时候,其实改变了变量的存储类型,从而使得静态的局部变量出了自己 的作用域也不会销毁,相当改变了这个局部变量的生命周期。

static修饰全局变量:一个全局变量在整个工程的其他文件內部能被使用,是因为全局变量具有外部链接属性,当一个全局变量被static修饰时,这个变量的外部链接属性就变成了内部链接属性。使得这个全局变量只能在自己所在的源文件内部使用,其他文件不能在使用,作用域变小了,生命周期没变。

static修饰函数变量:static修饰函数的时候,函数本来也是具有外部链接属性,被static修饰后,变成了内部链接属性。

指针

指针变量的大小取决于地址的大小

        32位平台下地址是32个bit位

        64位平台下地址是64个bit位

结构体

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语言,开发语言,后端)