初识C语言(基础类型,变量,常量,字符串,转义字符,注释)

本文介绍了C语言的基础类型,包括字符、整型、浮点型等,并通过示例展示了不同类型在内存中的占用。接着,讨论了变量和常量的区别,特别是全局变量和局部变量的生命周期。此外,还讲解了字符串的处理,转义字符的用法以及注释的重要性。
摘要由CSDN通过智能技术生成


在这里插入图片描述

一 基础类型

C没有字符串类型

类型含义
char字符数据类型
short短整型
int整型
long长整型
long long更长的整型
float单精度浮点型
double双精度浮点型
unsigned无符号整型(自然数)

通过C代码来查看其数据类型的占用空间

#include <stdio.h>
int main()
{
    printf("%zu\n",sizeof(char));   // 1     单位: 字节
    printf("%zu\n",sizeof(short));  // 2
    printf("%zu\n",sizeof(int));    // 4 
    printf("%zu\n",sizeof(long));   // 4
    printf("%zu\n",sizeof(long long));  // 8
    printf("%zu\n",sizeof(float));      // 4
    printf("%zu\n",sizeof(double));     // 8
    return 0;
}

其中单位之间的转化关系为:
bit | 比特位 ---------------- 1 字节 = 8 比特位 ----------小
byte | 字节 ----------------- 其余的进制为1024
kb
mb
gb
tb
pb --------------------------------------------------------------大

二 变量 常量

1 全局变量和局部变量

全局变量:顾名思义,就是在整个C文件中一直存在,有效的变量
局部变量:顾名思义,就是在所定义的区域范围内所存在,有效

(建议:不要将全局变量和局部变量的名字写成一样的)

# include <stdio.h>
int a=100;        // a 为全局变量
int main()
{
    int a=2;     // a 为局部变量
    printf("%d\n",a); // 输出 2 (全局变量与局部变量名字相同时,局部优先)
    return 0;
}

全局变量在两个文件中使用

全局变量具有外部链接属性

extern修饰其全局变量
在这里插入图片描述

2 生命周期

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

# include <stdio.h>
int main()
{
    {int a=2;         // a 的生命周期 开始
    printf("%d\n",a);
    }                 // a 的生命周期 结束
    printf("a=%d\n",a);
    return 0;
}

3 常量

常量的类型:
① 字面常量
② const 修饰的常变量
③ #define 定义的标识符常量
④ 枚举常量

字面常量:

# include <stdio.h>
int main()
{
    30;   // int 整型
    3.14; // float 浮点型
    'w';  // 字符
    "asdas"; // 字符串
    return 0;
}

const 修饰的常变量:

# include <stdio.h>
int main()
{
    const int a = 2;  // const 修饰 a 
    a = 10;           // 尝试修改 a 的值
    printf("a=%d\n",a);
    return 0; 
    // 程序报错
}

原因:

在C语言中,const修饰的a,本质为变量,但是不能进行修改,有常量的属性

证明 const修饰的a,本质为变量:

# include <stdio.h>
int main()
{
    const int a;   
    int arr[a]={0};
    // arr[a]={0}; 报错:a不为常量
    
    int arr1[10]={0};
    // 这种形式为数组,其中10的位置上只能是常量
    
    printf("arr1=%d\n",a);
    return 0;
}

define 定义的标识符常量:

# include <stdio.h>
# define MAX 100    // 定义MAX为标识符常量
int main()
{
    printf("%d\n",MAX); // 100
    int a=MAX;
    printf("a=%d\n",a); // a=100
    
    MAX = 200; 
    //   程序报错
    
    return 0;
}

枚举常量:

# include <stdio.h>
enum COLOR
{
    RED,
    GREEN,
    BLUE
};
int main()
{
    enum COLOR color=BLUE;   
    // red, green, blue 分别为 0 1 2,按照顺序从0开始往后累加
    printf("%d\n",color);  // 2
    return 0;
}

三 字符串

# include <stdio.h>
int main()
{
    char arr[] = "abcdef";
    // abcdef
    
    char arr2[] = {'a','b','c','d','e','f'};
    // abcdef烫烫烫烫烫abcdef
    
    printf("%s\n",arr);
    printf("%s\n",arr2);
    return 0;
}

为什么会出现这种情况呢?

# include <stdio.h>
int main()
{
    char arr2[] = {'a','b','c','d','e','f','\0'};   // '\0'
    printf("%s\n",arr2);
    return 0; // 正常运行,输出 abcdef
}

从中我们可以发现,在字符串后面加一个 ‘\0’ 就可以正常运行了
这是由于,字符串输出以 ‘\0’ 为结束标志

当我们用 strlen() 来求字符串的长度时

# include <stdio.h>
# include <string.h>
int main()
{
    char arr[] = "abc def";
    char arr2[] = {'a','b','c','d','e','f'};
    char arr3[] = {'a','b','c','d','e','f','\0'};
    
    int len=strlen(arr);
    int len1=strlen(arr2);
    int len2=strlen(arr3)
    
    printf("%d\n",len);     // 7   (空格也算一个字符)
    printf("%d\n",len1);    // 12 (不一定为什么呢,没有'\0')
    printf("%d\n",len2);     // 6
    return 0;
}

四 转义字符

转义字符含义
%d十进制有符号整数
%u十进制无符号整数
%c单个字符
%s字符串
%p指针的值
%e指数形式的浮点数
%x无符号 以十六进制表示的整数
%o无符号 以八进制表示的整数
%f打印float型的数据
%1f打印double型的数据
%zu打印sizeof的返回值
%04d打印的整数小于四位时,以0补齐
%6.9s长度在6~9
\n换行
\a警告字符,蜂鸣
\b退格符
\r回车
\f进纸符
\t水平制表符
\v垂直制表符
\ddd表示1~3个八进制的数字,如:\130 X
\xdd表示2个十六进制数字,如:\x30 0

其中 \ddd \xdd
把该数字换成十进制,并输出换算成的十进制数字所在ASCII表中表达的字符

在这里插入图片描述

五 注释

要利用好注释,对自己所敲代码进行注释哦,不然代码过多,自己都忘了什么意思啦

单行注释:

//这就是单行注释啦 想写啥就写啥,不耽误代码正常运行哦

多行注释:(缺陷:不能嵌套注释)

/*多行

注释
*/

新手小白,有何不妥,请您提出,还需努力!!!
👍+✏️+⭐️ 是对博主最大的鼓励与支持!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

汴京城下君

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值