1.C语言1

1.文件

文件是一个外存的概念,文件只存在于“外存”(硬盘,∪盘,网盘)中,文件由两部分构成:文件名和文件主体。

文件的分类(分类形式多种多样,在此我们只关注一种分类)分为:可执行文件;不可执行文件。

可执行文件:在 windows操作系统中,扩展名为:*.exe,*bat,'com等的文件是可执行文件;可执行文件由指令数据构成。 Linux是靠文件属性来判断判断是否可执行。

不可执行文件:其内容是由数据构成。举例:在C/C++语言中:c/*cpp源文件(文本),*h头文件(文本),*预编译文件(文本),*.s汇编文件,*.o/*obj二进制目标文件,*,exe可执行文件

C语言的编译连接过程:

2.什么是C语言

C语言是一种结构化语言,它有着清晰的层次,可按照模块(函数)的方式对程序进行编写,十分有利于程序的调试,且C语言的处理和表现能力都非常的强大,依靠非常全面的运算符和多样的数据类型,可以轻易完成各种数据结构的构建,通过指针类型更可对內存直接寻址以及对硬件迸行直接操作,因此既能够用于开发系统程序,也可用于开发应用软件。(了解内容:1982年成立C标准委员会,建立C语言的标准。1989年,ANS发布了第一个完整的C语言标准——ANSIX3.159—1989,简称"c89″。1999年,在做了一些必要的修正和完善后,SO( International StandardsOrganization),发布了新的C语言标准,命名为lSO/EC9899:1999,简称“c99″。在2011年12月8日,SO又正式发布了新的标准,称为SO/lEC9899:2011,简称为“C11″。目前,最新的C语言标准为2017年发布的“C17”。)

2.1C语言程序结构特点

1.C语言源程序可以由一个或多个源文件组成

2.每个源文件可由一个或多个函数组成

3.一个源程序不论由多少个文件组成,都有一个且只能有一个main函数,即主函数

4源程序中可以有预处理命令( include命令仅为其中的一种),预处理命令通常应放在源文件或源程序的最前面

5每一个说明,每一个语句都必须以分号结尾

6标识符,关键字之间必须至少加一个空格以示间隔。若已有明显的间隔符,也可不再加空格来间隔

3.数据类型

字符类型:char(1)

整形基本类型:short(2)int(4)long int(4)long long*(8)

浮点型基本类型:float(4) double(8) long double(8)

bool类型:bool (值:true 1;false 0)

无类型:void(一般不用于变量,用于无返回值的函数)

#include<stdio.h>



//sizeof计算数据类型或者变量所占字节个数;
int main()
{
    printf("char size %d\n", sizeof(char));//1
    printf("char size %d\n", sizeof(short));//2
    printf("char size %d\n", sizeof(int));//4
    printf("char size %d\n", sizeof(long int));//4
    printf("char size %d\n", sizeof(long long));//8
    printf("char size %d\n", sizeof(float));//4
    printf("char size %d\n", sizeof(double));//8
    printf("char size %d\n", sizeof(long double));//8
    printf("char size %d\n", sizeof(bool));//1
    return 0;
}

运行结果:(不同编译器,数据类型大小可能不同)

4.标识符、变量和常量

  • 变量与常量的区别在于:其值是否能够改变。变量能改变,常量不能。

  • 什么是声明,什么是定义?

什么是定义:所谓的定义就是为这个変量分配一块内存并给它取上一个名字,这个名字就是我们经常所说的变量名。但注意,这个名字一旦和这块内存匹配起来,它们就同生共死,终生不离不弃,并且这块内存的位置也不能被改变。一个变量在一定的区域内(比如函数内,全局等)只能被定义一次,如果定义多次,编译器会提示你重复定义同个变量或对象。

  • 什么是声明:有两重含义,如下 第一重含义:告诉编译器,这个名字已经匹配到一块内存上了 第二重含义:告诉编译器,我这个名字我先预定了,别的地方再也不能用它来作为变量名。

  • 声明与定义的主要区别:定义创建对象并为其分配内存;而声明并不分配内存

4.1标识符

给变量、常量、函数等起的名字。要求:

  1. 由数字,字母、和下划线“_”组成,且首字符只能是字母或者下划线。

  1. 不能是关键字。

  1. 区分大小写。

  1. *应做到“见名知意”

  1. *长度一般限制为8字符。(注:8字符长度限制是C89标准,C99标准已经扩充长度,其实大部分工业标准都更长)。

4.1变量

按照作用范围分为:

  1. 全局变量:从定义起往下皆为有效

  1. 局部变量:在该函数中有效

  1. 块变量:在该“{}”中有用

由于变量的作用于不同,所以可能存在某些重定义:(变量遵循向上就近原则)

#include<stdio.h>

int a = 10;//全局变量
int b = 20;
int main()
{
    printf("a=%d b=%d\n", a,b);
    int a = 20;//局部变量
    printf("a=%d b=%d\n", a, b);
    {
        int a = 30;//块变量
        printf("a=%d b=%d\n", a, b);
    }
    return 0;
}

运行结果:

4.2常量

C语言常量有:

  • 1.字面常量:为基本数据类型赋值的结果值被称之为字面常量,例如,int a = 10;这个10被称之为字面常量

  • 2.用# define定义的宏常量:定义的标识符不占内存,在预编译时进行宏替换,之后便不存在。

  • 3.用 const关键字修饰的变量,称为常变量

  • 4.枚举常量

  • 5.字符常量和字符串常量

4.2.1const修饰的常变量

常变量特点:只可读不可写(只能读值,不能修改值),因此常变量必须在定义时就进行赋值。

int const a=10;
const int b=10;
//以上两种const位置均可
4.2.1.1常变量在C与C++中区别。

1.在C中,常变量为全局变量是初始化为0,当为局部变量是必须初始化。

const int a;
int main() {
    const int b=0;
    printf("%d %d\n", a, b);
}

在C++,常变量无论定义为全局变量还是局部变量,均必须进行初始化。

const int a=0;
int main() {
    const int b=0;
    printf("%d %d\n", a, b);
}

2.在C中,常变量以变量为主,C++中以常量为主。

以下数组定义方法在C中无法编译通过,但在C++中可以编译通过:

int main() {
    const int len = 10;
    int arr[len] = { 1,2,3,4,5,6,7,8,9,0 };
    return 0;
}
4.2.1.2常变量与宏定义区别
  1. 二者同为值替换,但替换时间不同,宏定义是在预编译时替换,而常变量则是在编译时替换。

  1. 宏定义不占用内存,对值的类型无要求;而常变量需要开辟内存空间,需要对值得类型进行检查。

#define LEN 10
const int len = 10;
int main() {
    
    int arr[len] = { 1,2,3,4,5,6,7,8,9,0 };
    int brr[LEN] = { 1,2,3,4,5,6,7,8,9,0 };
    return 0;
}

4.2.2枚举常量(枚举成员)

枚举常量赋值规则:

  1. 枚举常量的值必须为整形;

  1. 当第一个枚举常量未赋值时默认值为0;当后面枚举常量未赋值时,其值默认为前一个值+1。

例如:

enum week
{
    A,//值默认为0;
    Mon=1,
    Tues=2,
    Wed=3,
    Thur,//Thur的值为Wed+1,=4;
    Fri=5,
    Sat=6,
    Sun=7
};

枚举常量的使用:

enum week
{
    Mon=1,
    Tues=2,
    Wed=3,
    Thur=4,
    Fri=5,
    Sat=6,
    Sun=7
};
int main()
{
    week wx = Mon;
    printf("%d \n", wx);//运行结果为1;
}

4.2.3字符常量与字符串常量

  1. 单引号 和双引号都是定界符,单引号是字符定界符,双引号是字符串定界符。

字符串常量与字符常量区别:

  1. ASCII码表:一些特殊值需要记住:

空字符(NULL 、\0) 0;换行 10;回车:13;空格 32;数字0 48;大写A 65;小写a 97

  1. '\0'是字符串结束的标志,占用内存空间但不占用字符串长度。

#include<stdio.h>
#include<string.h>

int main()
{
    char str[] = { "hello\0\0world\0" };
    int len = strlen(str);//5   '\0'不占用字符串长度
    int size = sizeof(str);//13+1  '\0'占用内存;且系统默认为补充'\0'
    printf("%s\nlen:%d\nsize:%d\n",str, len, size);
    return 0;
}
  1. 转义字符

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

S-Z.C

哈哈,给点米啊!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值