C语言基础语法入门

简介

  • C语言是一种常用的编程语言,它具有基础语法良好的特性。在C语言中,基础语法主要包括基本数据类型、运算符、流程控制、函数、指针、数组和结构体等。

  • C语言支持多种基本数据类型。其中整型包括int、short、long、long
    long等,浮点型包括float、double等,字符型则使用char类型。这些数据类型在不同的情境下有不同的用途,通过它们可以体现出C语言的强大之处。

  • 除了基本数据类型,C语言还有各种运算符。这些运算符包括算术运算符、比较运算符、逻辑运算符等,它们可以用于各种计算和判断操作。值得一提的是,C语言中的指针运算符是一种特殊的运算符,它可以让程序员直接处理内存地址,从而实现更高效的编程。

  • 在编写程序时,流程控制是必不可少的。C语言提供了if/else、switch、for、while等流程控制语句,可以根据不同的条件执行不同的操作。这些流程控制语句都具有很高的灵活性,可以满足各种编程需求。

  • C语言中的指针也是一大特点。通过指针,程序员可以直接访问内存地址,从而实现更加灵活和高效的编程。指针可以用于数组、函数等方面,它是C语言中不可或缺的一部分。

C语言具有基础语法良好、功能强大的特性。程序员可以根据不同的需求,灵活运用各种语法特点,编写出高效、健壮的程序。

C语言基础语法

1.基本数据类型

数据类型描述取值范围
整型类型--
整型 (int)表示整数值,通常用于整数计算取值范围因平台和编译器而异,通常为 -2147483648 到 2147483647
浮点型 (float)表示带有小数部分的数值,用于浮点数计算1.2E-38 到 3.4E+38
双精度浮点型 (double)表示高精度的浮点数值,用于需要更高精度的计算2.3E-308 到 1.7E+308
字符--
字符型 (char)表示单个字符,通常用于存储ASCII字符取值范围为 ’ ’ (空格) 到 ‘~’ (波浪号)
字符串类型 (string)表示一串字符的集合,用于存储和操作文本数据字符串的取值范围取决于字符串的长度,通常由程序员确定
布尔型 (bool)表示真或假的值,通常用于逻辑运算取值范围为 true 或 false
枚举类型 (enum)表示一组命名的整数常量,用于枚举值的定义取值范围为所定义的整数常量范围
结构体类型 (struct)表示一组不同类型的变量集合,用于存储相关数据结构体中各成员变量的取值范围取决于其数据类型
联合类型 (union)表示一组不同类型的变量共享同一内存地址,用于节省内存空间取值范围取决于最近一次写入的值的数据类型
指针类型 (*)表示内存地址,用于访问和操作内存中的数据取值范围取决于指针所指向的数据类型和内存地址空间限制

2.运算符

运算符描述
+加法运算符,用于将两个数相加。
-减法运算符,用于从一个数中减去另一个数。
*乘法运算符,用于将两个数相乘。
/除法运算符,用于将一个数除以另一个数。
%取模运算符,用于获取两个数相除后的余数。
==等于运算符,用于比较两个值是否相等。
!=不等于运算符,用于比较两个值是否不相等。
>大于运算符,用于比较左边的值是否大于右边的值。
<小于运算符,用于比较左边的值是否小于右边的值。
>=大于等于运算符,用于比较左边的值是否大于或等于右边的值。
<=小于等于运算符,用于比较左边的值是否小于或等于右边的值。
&&逻辑与运算符,当且仅当两个条件都为真时返回真。
!逻辑非运算符,用于反转一个条件的真假值。
&位与运算符,用于对二进制位进行与操作。
|位或运算符,用于对二进制位进行或操作。
^位异或运算符,用于对二进制位进行异或操作。
~位取反运算符,用于对二进制位进行取反操作。
<<左移运算符,将二进制位向左移动指定的位数。
>>右移运算符,将二进制位向右移动指定的位数。
++自加运算符,将变量的值增加1。
自减运算符,将变量的值减少1。

3.流程控制与搭配

流程控制描述
if条件语句,根据给定的条件执行不同的代码块。
else用于指定当条件不满足时要执行的代码块。
switch根据一个表达式的值来选择要执行的代码块。
case用于定义switch语句中各个可能的值和对应的代码块。
default用于指定当没有任何case值匹配时要执行的代码块。
for循环语句,用于重复执行一段代码直到满足指定的条件。
while循环语句,只要给定的条件为真就重复执行一段代码。
do循环语句,先执行一次代码块,然后根据条件决定是否继续执行。
break用于跳出当前循环或switch语句。
continue用于跳过当前循环的剩余部分,直接进入下一次循环。

流程控制的搭配:

  1. if-else语句:根据条件判断执行不同的代码块。
  2. switch-case语句:根据表达式的值选择要执行的代码块。
  3. for循环:重复执行一段代码直到满足指定的条件。
  4. while循环:只要给定的条件为真就重复执行一段代码。
  5. do-while循环:先执行一次代码块,然后根据条件决定是否继续执行。
  6. break语句:跳出当前循环或switch语句。
  7. continue语句:跳过当前循环的剩余部分,直接进入下一次循环。

4.函数

  • 函数是C语言的基础模块,是以完成某种目的为目标的语句的集合。它们有较强的独立性,可以相互调用。当我们需要使用函数内相关的功能时,只需要调用函数就可以完成功能,能大大减少冗余重复语句的使用,增强代码的可读性。

在C语言中,函数由一个函数头和一个函数主体组成。下面列出一个函数的所有组成部分:

  • 返回类型:函数可以返回一个值,return_type是函数返回的值的数据类型。有些函数执行所需的操作而不返回值,在这种情况下,return_type是关键字void。
  • 函数名称:这是函数的实际名称。函数名和参数列表一起构成了函数签名。
  • 参数:参数就像是占位符。当函数被调用时,您向参数传递一个值,这个值被称为实际参数。参数列表包括函数参数的类型、顺序、数量。参数是可选的,也就是说,函数可能不包含参数。

5.指针

  • 指针是C语言中非常重要的概念,它可以用来存储变量的地址。指针变量声明时需要指定指针所指向的数据类型,例如int *p表示p是一个指向整型数据的指针。

  • 指针在内存中的表示是通过地址来实现的。每个变量在内存中都有一个特定的地址,指针就是用来存储这个地址的变量。通过指针可以间接地访问和操作变量的值。

下面是一些关于指针的基本操作:

  • 定义指针变量:int *p;
  • 给指针赋值:p = &a; //将变量a的地址赋给指针p
  • 访问指针所指向的值:*p; //获取指针p所指向的变量的值
  • 指针运算:++p, --p, p++, p–等

下面是一个简单的示例代码,演示了如何使用指针来访问和修改变量的值:

#include <stdio.h>

int main() {
    int a = 10; //定义一个整型变量a并初始化为10
    int *p; //定义一个整型指针p
    p = &a; //将变量a的地址赋给指针p
    printf("a的值是: %d
", a); //输出a的值
    printf("a的地址是: %p
", &a); //输出a的地址
    printf("指针p的值(即a的地址)是: %p
", p); //输出指针p的值(即a的地址)
    printf("指针p所指向的变量的值(即a的值)是: %d
", *p); //输出指针p所指向的变量的值(即a的值)
    *p = 20; //通过指针修改变量a的值
    printf("修改后的a的值是: %d
", a); //输出修改后的a的值
    return 0;
}

运行结果如下:

a的值是: 10
a的地址是: 0x7ffee3b4c9c0
指针p的值(即a的地址)是: 0x7ffee3b4c9c0
指针p所指向的变量的值(即a的值)是: 10
修改后的a的值是: 20

6.数组

  • 数组是一种数据结构,用于存储多个相同类型的元素。在计算机编程中,数组通常被用来处理大量数据。

  • 数组的元素可以通过索引来访问和修改。索引是从0开始的整数,表示元素在数组中的位置。例如,如果一个数组包含5个元素,那么第一个元素的索引是0,第二个元素的索引是1,以此类推。

  • 数组可以是一维、二维或多维的。一维数组只有一个维度,每个元素都有相同的长度。二维数组有两个维度,每个元素都是一个一维数组。多维数组有多个维度,每个元素都是一个更低维度的数组。

下面是一个示例代码,演示了如何声明和初始化一个一维数组:

int myArray[5] = {1, 2, 3, 4, 5}; // 声明并初始化一个包含5个整数的一维数组

这个数组包含了5个整数类型的元素,分别是1、2、3、4和5。这些元素可以通过索引来访问和修改,例如:

myArray[0] = 6; // 将第一个元素修改为6
myArray[2] = 7; // 将第三个元素修改为7

下面是一张图像,展示了一个包含5个整数的一维数组的表示方式:

+---+---+---+---+---+---+---+
索引///| 1 | 2 | 3 | 4 | 5 |
-----------------------------
数据/值| 6 | 2 | 7 | 4 | 5 |
+---+---+---+---+---+---+---+

在这个图像中,每个方格代表一个数组元素,方格中的值表示该元素的值。

结构体

  • 结构体是一种复合数据类型,它由多个不同类型的成员变量组成。每个成员变量都有一个名称和一个类型。结构体可以用于将不同类型的数据组合在一起,以便在程序中更方便地处理这些数据。

例如,我们可以定义一个名为Student的结构体,其中包含姓名(name)和分数(scores)两个成员:

struct Student {
    char name[20];
    int scores[5];
};

然后,我们可以定义一个包含10个元素的结构体数组students:

struct Student students[10];

在这个例子中,students是一个包含10个元素的结构体数组,每个元素都是一个Student类型的结构体。每个Student结构体包含一个名为scores的整型数组和一个名为name的字符数组。

在图像表示上,结构体数组可以看作是一个矩阵,其中的每个元素都是一个结构体。结构体中的成员对应矩阵中的元素。例如,以下是一个包含3个学生的结构体数组的图像表示:

+--------+------------+
|   name |    scores  |
+--------+------------+
|  Student1 |  85, 90, 88 |
|  Student2 |  78, 80, 85 |
|  Student3 |  92, 88, 91 |
+--------+------------+

枚举

枚举类型是C语言中的一种数据类型,它允许我们定义一组命名的常量。这些常量可以是整数、字符或其他类型的值。枚举类型的语法如下:

enum 枚举名 {
    枚举常量1,
    枚举常量2,
    ...
};

例如,我们可以定义一个表示星期的枚举类型:

// 定义一个表示星期的枚举类型
enum Weekday {
    Monday, // 星期一
    Tuesday, // 星期二
    Wednesday, // 星期三
    Thursday, // 星期四
    Friday, // 星期五
    Saturday, // 星期六
    Sunday // 星期日
};

接下来,我们可以使用枚举类型来声明变量和进行比较:

#include <stdio.h>

int main() {
    enum Weekday today = Monday; // 声明一个枚举类型的变量today,并将其初始化为星期一

    if (today == Monday) {
        printf("今天是星期一
");
    } else if (today == Tuesday) {
        printf("今天是星期二
");
    } else if (today == Wednesday) {
        printf("今天是星期三
");
    } else if (today == Thursday) {
        printf("今天是星期四
");
    } else if (today == Friday) {
        printf("今天是星期五
");
    } else if (today == Saturday) {
        printf("今天是星期六
");
    } else if (today == Sunday) {
        printf("今天是星期日
");
    }

    return 0;
}

在这个例子中,我们使用了枚举类型Weekday来声明一个变量today,并将其初始化为星期一。然后,我们使用一系列的if语句来判断today的值,并输出相应的结果。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值