小白必看-C语言初了解(上)

初始C语言

1.c语言标准规定的long long 长度

sizeof(long long) >=sizeof(long) >= sizeof(int)                

2.实型 就是浮点型


3.计算机中的单位

bit:比特位
byte: 字节  1byte = 8bit
kb = 1024byte
mb = 1024 kb
gb = 1024mb
tb = 1024 gb
pb = 1024 tb

4.一个工程里有且只有一个main函数

多文件情况下也是一样


5.局部变量和全局变量

局部变量 - 在大括号(代码块)内部定义的变量就是局部变量

全局变量 - 在大括号外部定义的变量就是全局变量


作用域

局部变量的作用域:局部变量所在的局部范围

全局变量的作用域:整个工程都可以使用


生命周期

1.程序的生命周期其实和main函数的生命周期一样

2.局部变量的生命周期:进入局部变量所在的范围开始,出局部变量范围生命周期结束

3.全局变量的生命周期:程序的生命周期


6.字面常量

直接写出来的值

如: 3.14
    a

7.const修饰的常变量

一个变量不能改变就说明具有常属性 ,但仍是变量,是常变量

例子:

int n = 100;
int arr[n] ={0}; //错误,[]内的必需为常数 ,写成变量是变长数组,而C99才支持变长数组的概念

const int  n = 100;    //n不是常量,n只是具有常属性,不能被修改而已
int arr[n] = {0};     //错误,    

8.#define定义的标识符常量

通过define定义出来的就是真的常量

注意:#define定义后面不跟分号

#define Max 100
int main()
{
    int a  =Max;
    int arr[Max] = {0};        //正确,因为#define定义出来的Max是常量
    printf("%d\n",a);
    Max = 200;        //错误  Max为常量,不能被修改
    return 0;
}

9.枚举常量

生活中有些东西可以一一列举

如:性别:男,女,保密 三元色:红绿蓝

enum Sex        //enum Sex 是枚举类型
{
    //枚举的可能取值--枚举常量,可以被赋值,否则第一个数从0开始,数值依次往下+1
    MALE,            
    FEMALE,
    SECRET
};        //注意要有分号

注意:枚举常量后面跟的是逗号 不是分号
     最后一个枚举常量后面可以不跟逗号,其余要有逗号
enum Sex
{
    MALE,
    FEMALE,
    SECRET
};
int main()
{
    enum Sex s = SECRET;    //s是枚举变量,值是SECRET对应的值
    s = 10;    //正确,s是变量,可以更改s的值,
    // MALE = 4;   //ERR  因为MALE是常量,不能被修改

    //若枚举常量不赋值,默认从0开始,值往下+1
    printf("%d\n", MALE);    //0
    printf("%d\n", FEMALE);    //1
    printf("%d\n", SECRET);    //2    
    return 0;
}
enum Sex
{
    MALE=3,
    FEMALE=7,
    SECRET
};
int main()
{
    printf("%d\n", MALE);    //3
    printf("%d\n", FEMALE);    //7 
    printf("%d\n", SECRET);    //8    //SECRET未被赋值,值顺着FEMALE往下+1
    return 0;
}

10.关于变长数组

C99中的概念

编译器一定要支持C99标准,否则运行不了

变长数组不可以初始化

//c99
int n = 10;
int arr[n] = {0};    //err 变长数组不可以初始化

int arr[n];    //正确

11.字符串

字符串末尾默认放\0 ,

1.1

对于数组而言,未初始化部分自动放\0


image-20220311184537920

%s打印时,遇到\0停止。

arr的只有6个空间,放不下\0 越界访问遇到\0才停止

所以要特别注意\0的问题,防止越界


image-20220311184549192

对于arr数组,是不包含\0的,strlen求字符串长度,遇到\0才停止,所以越界访问了!

strlen是库函数,求字符串长度,\0是字符串的结束标志,不算进长度


问:数组acX的长度比acY的长还是短?

char acX[] = "abcdef"
char acY []= {'a','b','c','d','e','f'}

->长度:acX>acY 因为问的是数组的长度,不是字符串的长度,不能按strlen的方式算。

acX比acY多放进去\0,所以acX长度比acY长

#C语言#
全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务