C语言学习笔记:C语言基本知识

文章详细介绍了C语言的基础知识,包括字符集(如ASCII码),标识符的规则,关键字的作用,数据类型的分类(如整型、实型、字符型)以及进制转换方法。此外,还涵盖了变量、运算符和数据存储空间的概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

✨博文作者:烟雨孤舟
💖 喜欢的可以 点赞 收藏 关注哦~~

✍️ 作者简介: 一个热爱大数据的学习者

✍️ 笔记简介:作为大数据爱好者,以下是个人总结的学习笔记,如有错误,请多多指教!

目录

字符集

标识符

关键字

数据类型

数据存储空间

进制转换

整型

实型

字符型

转义字符

void 类型

数据类型转换

常量

变量

运算符


字符集

字符是组成语言的最基本元素,国际上使用最广泛的计算机字符编码时ASCII码,标准ASCII码字符集包括128个字符,主要由字母字符、数字字符、空格符、特殊字符和其他字符组成。

标识符

在程序中使用的变量名和函数名等统称为标识符
标识符规范:
    不能是关键字
    只能是字母数字下划线组成的字符串
    第一个字符不能是数字

关键字

int            声明整型变量或函数
double     声明双精度浮点型变量或函数返回值类型
long         声明长整型变量或函数返回值类型
char         声明字符型变量或函数返回值类型
float         声明浮点型变量或函数返回值类型
short          声明短整型变量或函数
signed        声明有符号类型变量或函数
unsigned    声明无符号类型变量或函数
void           声明函数无返回值或无参数,声明无类型指针
for             一种循环语句
do             循环语句的循环体
while         循环语句的循环条件
goto          无条件跳转语句
switch       用于开关语句
case         开关语句分支,(与switch连用)
default     开关语句中的"其它"分支
if              条件语句
else          条件语句否定分支(与if连用)
continue    结束当前循环,开始下一轮循环
break        跳出当前循环
auto          声明自动变量
const        定义常量,如果一个变量被const修饰,那么它的值就不再改变
enum        声明枚举类型
extern       声明变量或函数是在其它文件或本文件的其他位置定义
register    声明寄存器变量
sizeof       计算数据类型或变量长度(即所占字节数)
static        声明静态变量
struct        结构体类型
typedef     用户自定义类型命名
union        声明共用体类型
volatile     说明变量在程序执行中可被隐含地改变
return       返回语句(可以带参数,也可不带参数)

数据类型

数据类型分为:基本数据类型、构造数据类型、指针类型、空类型
基本数据类型的定义:其值不可以再分解其他类型。
构造数据类型的定义:构造数据类型根据已定义的一个或多个数据类型用构造的方法来定义的。一个构造类型的值可以分解成若干“成员”或“元素”,每个成员都是一个基本数据类型或又是一个构造类型。
指针类型的定义:指针是一种特殊的,同时又具有重要作用的数据类型。其值用来表示某个变量在内存中的地址。
void 类型定义:类型说明符void表示没有值的数据类型,通常用于函数返回值。
基本数据类型:字符型(char)、整型(int、short、long、unsigned)、单精度浮点型(float)、双精度浮点型(double)、枚举类型(enum)
构造数据类型:数组([])、结构体(struct)、共用体类型(union)
枚举类型:enum,被用来定义在程序中只能赋予其一定的离散整数值的变量。
派生类型:包括数组类型、指针类型和结构体类型。
布尔类型:Bool

数据存储空间

数据和指令在计算机中都是以二进制的形式存储的
位(bit)是计算机中的基本存储单元,八个二进制位是一个字节(byte)
在内存中每个字节类型的存储单元都有一个唯一的地址,通过地址可以对内存中的数据进行保存和读取,c语言通过指针的方式进行地址的操作

 常用基本数据类型占用空间(64位):
char    1 字节    int        4 字节    short    2 字节
long    4 字节    float    4 字节    
double    8 字节    long double    16 字节
可以使用sizeof求运算符所占字节数,一个字节(8位)
指针的大小取决于计算机体系结构和操作系统的位数。在32位操作系统中,指针通常为4字节;在64位操作系统中,指针通常为8字节。

进制转换

 十进制转换其他进制整数转换:除以进制,反向取余数,直到商为0终止
    十进制转二进制的整数转换:除以2,反向取余数,直到商为0终止
                         9(10)→1001(2)
    十进制转八进制的整数转换:除以8,反向取余数,直到商为0终止
                         796(10)→1434(8)
    十进制转十六进制的整数转换:除以16,反向取余数,直到商为0终止
                         796(10)→31c(16)
十进制转换其他进制小数转换:乘进制取整,顺序输出                        

十进制转二进制的小数转换:乘2取整,顺序输出   
                        0.68(10)–>0.10101(8)精确到小数点后5位
                 具体步骤:
                        0.68* 2=1.36 -->1
                        0.36* 2=0.72 -->0
                        0.72* 2=1.44 -->1
                        0.44* 2=0.88–>0
                        0.88* 2=1.76 -->1
其他进制转换为十进制:按权展开求和                                   

   二进制:110.1=(1*2^2)+(1*2^1)+(0*2^0)+(1*2^-1)=4+2+0+1/2=6.5
  八进制:0141=(1*8^2)+(4*8^1) +(1*8^0)=64+32+1=97
 十六进制:CB=(C*16^1)+(B*16^0)=220

整型

 整型数据可以用十进制、八进制、十六进制来表示
十进制:不需要在数字前面加前缀,与数学中的表示方式相同,由数字0~9组成
八进制:在数字前面加前缀0(数字0),由数字0~7组成
十六进制:在数字前键前缀OX或ox,由数字0~9,字母a~f或A~F组成
整型的类型说明符:int、short int、long int

实型

实型数据在C语言中用于表示包含小数部分的数据类型,也称为浮点型。
实型可以用十进制小数形式和指数形式来表示
十进制小数:由数字和小数点组成
指数:以字母E或e来表示以10为底的指数。E或e的两边必须有数右边必须是整数
单精度类型float:7精度
双精度类型double:16精度
长双精度long double:至少163精度

字符型

 在c语言中,字符类型包括字符形式和字符串形式。
字符形式:使用英文单引号''括起来的一个字符,类型说明符为char
字符串形式:使用双引号括起来的有效字符序列,类型说明符使用字符数字替代
字符型数据只能用单引号括起来,不能用双引号或其他类型的括号
单引号不属于字符中的一部分,只起到界定的作用
单引号中的字符只能有一个,不能是一串字符
字符形式和字符串形式的字符区分大小写
单引号中的字符可以是数字、字母等字符集中所有可以显示的字符,出\、’、”
字符串型数据只能使用双引号括起来,不能用单引号或其他数据类型的括号
双引号不属于字符中的一部分,只起到界定的作用
双引号的字符可以是零个也可以是一串字符序列,若有零个字符则字符串的长度为0,称为空串。
字符串中的一个字符占用一个字节
字符串的长度为有效字符+\0 

转义字符

转义字符中只能使用小写字母,\v和\f在屏幕中显示没有任何影响但会影响打印机

\\    \ 字符     \'    ' 字符    \"    " 字符    \?    ? 字符
\a    警报铃声    \b    退格键        \f    换页符        \n    换行符
\r    回车          \t    水平制表符    \v    垂直制表符
\ooo    一到三位的八进制数    \xhh...    一个或多个数字的十六进制数

void 类型

void 类型指定没有可用的值。它通常用于以下三种情况下:
1.函数返回为空:不返回值的函数的返回类型为空。例如void exit(形参列表);
2.函数参数为空:函数不接受任何参数。例如 int rand(void);
3.指针指向void:类型为 void * 的指针代表对象的地址,而不是类型。例如,内存分配函数void *malloc(a); 返回指向void的空指针,可以转换为任何数据类型。

数据类型转换

1.隐式类型自动转换:在表达式中自动发生的,无需进行任何明确的指令或函数调用,将一种较小的类型自动转换为较大的类型。例如,将int类型转换为long类型或float类型转换为double类型。隐式类型转换可能会导致数据精度丢失或数据截断。
2.显式类型强制转换:需要使用强制类型转换运算符,将一个数据类型的值强制转换为另一种数据类型的值。强制类型转换可以使程序员在必要时对数据类型进行更精确的控制,但也可能会导致数据丢失或截断。
3.赋值转换:如果赋值符两边的数据类型不同,则将赋值符右侧的类型转换为左侧变量的类型
4.隐式类型自动转换实例:
    int i = 10;
    float f = 3.14;
    double d = i + f; // 隐式将int类型和float转换为double类型
5.显式类型强制转换实例:
    double d = 3.14159;
    int i = (int)d; // 显式将double类型转换为int类型
5.隐式自动转换规则:
    若数据类型不同,先转换成同一类型再运算
    浮点数赋给整型,该浮点数小数被舍去;
    整数赋给浮点型,数值不变,但是被存储到相应的浮点型变量中;
6、显示强制类型转换形式: 变量=(类型说明符)表达式,例 b=(int)s

常量

常量是固定值,在程序执行期间不会改变。常量可以是任何的基本数据类型,如整数常量、浮点常量、字符常量,或字符串字面值,也有枚举常量。

整型常量:
    整型常量可以是十进制、八进制或十六进制的常量。
    整型常量可以带一个后缀,后缀是U和L的组合,U表示无符号整数,L表示长整数。后缀可以是大写,也可以是小写,U和L的顺序任意。
    032UU       /* 非法的:不能重复后缀 */
    30u            /* 无符号整数 */
    30l             /* 长整数 */
    30ul          /* 无符号长整数 */
实型常量:
    实型常量由整数部分、小数点、小数部分和指数部分组成。
    314159E-5L    /* 合法的 */
    510E              /* 非法的:不完整的指数 */
    .e55              /* 非法的:缺少整数或分数 */
字符常量:
    字符常量是括在单引号中的一个字符,可以是字符或转义序列
字符串常量:
    字符串常量是括在双引号 " " 中的。
    "hello, dear" "hello, \dear"
    字符串常量在内存中以 null 终止符 \0 结尾

定义常量:
    两种简单的定义常量的方式:使用#define预处理器;使用const关键字。
    const修饰的常变量:
        const 数据类型 常量名;
        const int a = 1;
        const修饰的常变量,本质上是变量,但具有常属性,不能被修改。
    define定义的标识符常量:
        #define 标识符 常量
        #define宏定义命令定义标识符常量,该标识符常量在程序中是个定值,通常      用于代表数组容量或涉及数学的常量等。
        #define SIZE 10    // 此处SIZE为常量10
        int main(){
        int arr[SIZE]={0};
        return 0;}
        如需修改数组大小,只需将SIZE所代表的值修改即可

变量

变量其实是程序可操作的存储区的名称。C 中每个变量都有特定的类型,类型决定了变量存储的大小和布局,该范围内的值可以存储在内存中,运算符可应用于变量上。变量的名称有标识符组成,变量遵循先定义后使用的原则。

变量定义:类型说明符 变量名1,变量名2;
        int a,b;
变量赋值(初始化):先定义后赋值
        int a,b;
        a = 1;
        b = 2;
        定义的同时赋值
        int a=1,b=2;
        多重赋值
        int a=b-c-10;
实例:
    int num = 1 ; //整型
    double score = 2.3; //小数
    char gender = 'A'; //字符
    char name[] = "尚硅谷"; //字符串
未初始化的变量会被隐式初始化为NULL(所有字节的值都是0)
变量的生存周期:
    当变量被定义时程序便在内存中为变量分配相应的存储空间
    通过赋值语句使变量获取初始值
    程序在运行中变量中存放的值可能会发生变化
    程序结束后释放变量所用的占用空间
变量的分类:
    变量的作用域:全局变量、局部变量
    变量的存储方式:自动变量、静态变量、寄存器变量

#include <stdio.h>
int x,y;// 函数外定义全局变量 x 和 y
int addtwonum(){//自定义一个整数函数
    extern int x,y;// 函数内声明变量x和y为外部变量
    x = 1;// 给全局变量x和 赋值
    y = 2;
    return x+y;
}
int main(){
    int result;
    result = addtwonum();// 调用函数 addtwonum
    printf("result 为: %d",result);
    return 0;
}

运算符

算数运算符:
    + 加法运算符    -减法运算符 *乘法运算符 /除法运算符 %模运算符(取余)
    % 取余,两边只能是整型
    / 除法,两边只要有一个实型结果就是实型,都是整型结果则取整
    ++自增运算符 --自减运算符
    ++自增运算符/自减运算符在变量名后面,在赋值语句之后进行自增自减
    ++自增运算符/自减运算符在变量名前面,在赋值语句之前进行自增自减
    符合赋值运算符 a=a+5 等价与a+=5
关系运算符: true  false 
    ==    左右两个的值是否相等,如果相等则条件为真。
    !=    左右两个的值是否相等,如果不相等则条件为真。
    >    检查左的值是否大于右的值,如果是则条件为真。
    <    检查右的值是否大于左的值,如果是则条件为真。
    >=    检查左的值是否大于或等于右的值,如果是则条件为真。
    <=    检查左的值是否小于或等于右的值,如果是则条件为真。
逻辑运算符:
    &&    逻辑与运算符。如果两个操作数都非零,则条件为真。 and
    ||    逻辑或运算符。如果两个操作数中有任意一个非零,则条件为真。 or
     !    逻辑非运算符。如果条件为真则逻辑非运算符将使其为假。   
赋值运算符:
    =    赋值运算符
    +=    加且赋值运算符,把右边数加上左边数的结果赋值给左边数
    -=    减且赋值运算符,把右边数减上左边数的结果赋值给左边数
    *=    乘且赋值运算符,把右边数乘以左边数的结果赋值给左边数    
    /=    除且赋值运算符,把左边数除以右边数的结果赋值给左边数    
    %=    求模且赋值运算符,求两个操作数的模赋值给左边操作数
杂项运算符:
    &    取地址。&a;
    *    取内容。*a; 
    ? :    条件表达式    如果条件为真 ? 则值为 X : 否则值为 Y
    sizeof()    返回变量的字节大小。sizeof(a) 
位操作运算符:
    参与运算的量按二进制位进行运算
    位与&、位或|、位非~、位异或^、左移<<、右移>>
运算符优先级:
    括号成员是老大; // 括号运算符 []() 
    全体单目排老二; // 单目运算符++、--、+、-、指针运算*、&、!
    乘除余三,加减四; // 这个"余"是指取余运算即%
    移位五,关系六; // 移位运算符:<< >> ,关系:> < >= <= 等
    等与不等排行七; // 即 == 和 !=
    位与异或和位或; // 这几个都是位运算: 位与(&)异或(^)位或(|)    
    "三分天下"八九十;  
    逻辑与,逻辑或;// 逻辑运算符: || 和 &&
    十一十二紧挨着;// 注意顺序:优先级(||) 底于 优先级(&&) 
    条件只比赋值高, // 三目运算符优先级排只比赋值运算符和 "," 高
    逗号运算最低级  //逗号运算符优先级最低 
运算符的目:运算符需要操作的个数
单目运算符:有一个参与运算的量,如++、--、!
双目运算符:有两个参与运算的量,如+、-、*、/
算数表达式:有三个参与运算的量,如?:
    用算数运算符和括号连接起来的负责c语法规则的式子。
    例如:a+b;(a*2)-3

三目运算符
三目运算符也叫条件运算符、三元运算符,是由一个问号和一个冒号组成。
语法:
    表达式1?表达式2:表达式3;
语义:
    先执行表达式1,如果表达式1的结果如果为真,那么执行表达式2,并且这个整体的运算式的结果是表达式2的结果;如果表达式1的结果如果为假,执行表达式3,运算式的结果是表达式3的结果。

 sizeof运算符
sizeof是用来计算变量(或数据类型)在当前系统中占用内存的字节数。
用于数据类型:sizeof(数据类型);
用于变量:sizeof(变量名);或 sizeof 变量名;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

烟雨孤舟

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

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

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

打赏作者

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

抵扣说明:

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

余额充值