C语言自学笔记2


前言

将进行数组,函数,指针,分支语句中的if,switch语句笔记记录

一、数组

1.关于数组

数组是将具有相同个若干变量按有序形式排列的工具(类似于数学中的集合)。
基本格式:数据类型 数组名(要有意义) [数组大小]
例:int a[10] 则此数组就只能有整型数据

2.数组须知

①int a[ ]中数组大小不能为0,-1等负数 。
②不许对数组大小做动态定义,即[ ]中不放变量。、

3.数组应用

(一)初始化(在定义时赋值)
1.int a[10]={1,2,3,4,5,6,7,8,9,10};
2.int a[10]={1,2,3};(剩下的默认为0)
3.int a[ ]={1,2,3……}({ }中有多少元素决定数组大小)
(二)数组的引用
基本格式:数组名[下标]
下标从0开始
例如:int a[10]={1,2,3,4,5,6,7,8,9,10}中想要取到3就要输入
a[2];
printf(“%d”,a[2]);
(三) 输入与输出
输出:for循环

int a [10];
for (i=0;i<10;i++)
{
printf(%d,a[i]);
}

输入:

int a[10];
for(i=0;i<10;i++)
{
scanf(“%d”,a[i]);
}

二、函数

1、函数的概念

在 C 语言中,函数是一组执行特定任务的语句集合。函数可以接受输入参数(也称为形参),并可以返回一个值。函数的使用可以使程序更加模块化、易于维护和扩展。

2、函数的定义

函数的一般形式如下:

返回值类型 函数名(参数类型 参数名1, 参数类型 参数名2,...) {
    // 函数体
    return 返回值;
}
  • 返回值类型:指定函数返回值的数据类型。如果函数不返回任何值,则返回值类型为 void。
  • 函数名:函数的名称,用于在程序中调用函数。
  • 参数类型和参数名:函数接受的参数的数据类型和名称。可以有多个参数,用逗号分隔。 .函数体:包含执行特定任务的语句集合。
  • return语句:用于返回函数的结果。如果函数返回值类型为 void,则可以省略 return 语句

例如,下面是一个计算两个整数之和的函数定义:

int add(int a, int b) {
    return a + b;
}

3、函数的调用

函数的调用是通过函数名和实际参数(也称为实参)来实现的。实际参数是在调用函数时传递给函数的具体值。
例如,下面是调用上面定义的 add 函数的示例:

int main() {
    int result = add(3, 5);
    printf("3 + 5 = %d\n", result);
    return 0;
}

4、函数的参数传递

  • C 语言中函数的参数传递有两种方式:值传递和地址传递。
    -值传递:将实际参数的值复制一份传递给函数的形参。在函数内部对形参的修改不会影响到实际参数的值。
    -地址传递:将实际参数的地址传递给函数的形参。在函数内部通过形参可以修改实际参数的值。

例如,下面是一个通过值传递和地址传递实现交换两个整数的值的函数:

void swapByValue(int a, int b) {
    int temp = a;
    a = b;
    b = temp;
}

void swapByAddress(int *a, int *b) {
    int temp = *a;
    *a = *b;
    *b = temp;
}

5、函数的返回值

函数可以返回一个值,返回值的类型由函数的定义决定。
如果函数的返回值类型为 void,则函数不返回任何值。
例如,下面是一个返回两个整数中较大值的函数:

int max(int a, int b) {
    return (a > b)? a : b;
}

6、函数的声明

在使用函数之前,需要对函数进行声明。函数声明告诉编译器函数的名称、参数类型和返回值类型。
函数声明的一般形式如下:

返回值类型 函数名(参数类型 参数名1, 参数类型 参数名2,...);

例如,下面是对上面定义的 add、max 函数的声明:

int add(int a, int b);
int max(int a, int b);

7、函数的作用

提高代码的可读性和可维护性:将一个复杂的任务分解为多个小的函数,可以使代码更加清晰易懂,便于维护和修改。
提高代码的可重用性:函数可以在不同的地方被调用,避免了重复编写相同的代码。
提高代码的可扩展性:可以通过添加新的函数来扩展程序的功能,而不需要修改现有的代码。

8、注意事项

函数的参数和返回值的数据类型要匹配,否则会导致编译错误。
函数的名称要具有描述性,以便于理解函数的功能。
函数的参数数量不宜过多,否则会影响函数的可读性和可维护性。
函数的内部实现要尽量简洁,避免过于复杂的逻辑。

三,指针

1.前引

先谈电脑内存:在电脑中,内存被分成一块一块的,使得大内存有更好地使用,每个内存单元为1个字节,每个也都进行编号。
例如常见的32位电脑就有32位bit
0000 0000 0000 0000 0000 0000 0000 0000

当和1组合起来时,便认为有2的32次方种可能
2得32次方=4294967296byte=4GB
这也是32位电脑的硬盘内存
*

2.地址

编码中
int a=10;//认为向内存申请4个字节,来存储10
&a;//为取a的地址
在vs中查看地址:①CTRL+F10(热重载调试)②调试 -> 窗口 -> 内存 -> 监视 -> 输入a (查看内存时输入&a)

2进制中10为0000 0000 0000 0000 0000 0000 0000 1010 16进制中10为0 0
0 0 0 0 0 a =0*00 00 00 0a
故当查看时是以16进制显示地址,所以以上述结果为标准

3.取地址,输出地址

printf(“%p”,&a);//%p打印地址
int*p=&a//将地址存入p
则p就是指针变量

而关于为什么是int,因为其指向的是&a,而a是int类型所修饰的。故认为*前面加什么由指向的是什么类型所决定
注意:int * 并非类型 ,*只说明p是指针变量

4.解引用

*p;//意为通过p中地址找到p指向的对象
*p=20;//将a改掉,通过10找到地址,在将地址中的数改掉

5.指针大小

不管是什么类型的指针,都是在创建指针变量,指针是用来存地址的,所以其大小取决于一个地址所需空间

32位电脑就是4
64位电脑就是8
这同样是通过sizeof()得到的

四,分支语句中的if语句

1、简介

在编程语言中,if语句是一种条件判断语句,用于根据特定条件执行不同的代码块。它是控制程序流程的重要工具之一。

2、语法

if condition:
    # 如果条件为真执行的代码块
else:
    # 如果条件为假执行的代码块

或多种条件

if condition1:
    # 如果条件1为真执行的代码块
elif condition2:
    # 如果条件2为真执行的代码块
else:
    # 如果以上条件都为假执行的代码块

3、使用要点

(一)条件表达式
条件表达式可以是一个布尔值(True 或 False),也可以是一个返回布尔值的表达式。
例如:

x > 5,y == "apple"等

可以使用比较运算符(如 ==、!=、<、>、<=、>=)、逻辑运算符(如 and、or、not)等来构建复杂的条件表达式。
(二)代码块缩进
在 Python 等语言中,if语句后的代码块需要通过缩进进行标识。
通常使用四个空格或一个制表符进行缩进,保持代码的一致性和可读性。
(三)else 子句
else子句是可选的,当 if 条件为假时执行。
如果有多个条件需要判断,可以使用 elif(在某些语言中也称为 else if)子句。
(四)应用场景
用于根据用户输入、程序状态或其他条件来决定程序的执行路径。
例如,在一个游戏中,可以根据玩家的得分来决定是否显示胜利或失败的消息。
在数据处理中,可以根据数据的特征进行不同的操作。

4、示例

以下是一个 Python 示例,根据输入的数字判断是正数、负数还是零:

num = int(input("请输入一个数字:"))
if num > 0:
    print("这是一个正数。")
elif num < 0:
    print("这是一个负数。")
else:
    print("这是零。")

五,分支语句中的switch语句

1、简介

在编程语言中,switch语句是一种多分支选择结构,用于根据不同的条件执行不同的代码块。它可以替代多个if-else语句的嵌套,使代码更加简洁易读。

2、语法

不同编程语言的switch语句语法略有不同,但通常具有以下形式:

switch (expression) {
    case value1:
        // 当 expression 的值等于 value1 时执行的代码块
        break;
    case value2:
        // 当 expression 的值等于 value2 时执行的代码块
        break;
   ...
    default:
        // 当 expression 的值与任何 case 都不匹配时执行的代码块
}

3、使用要点

(一)表达式和值
expression是一个表达式,其结果通常是一个整数、字符或枚举类型。
value1、value2等是与expression进行比较的值。
(二)case 语句
每个case后面跟着一个值和一个代码块。当expression的值与case后面的值相等时,对应的代码块将被执行。
可以有多个case语句,用于处理不同的情况。
(三)break 语句
在每个case代码块的末尾,通常需要使用break语句来跳出switch语句,防止继续执行下一个case。
如果没有break语句,程序将继续执行下一个case,直到遇到break或switch语句结束。
(四)default 语句
default语句是可选的,当expression的值与任何case都不匹配时,default代码块将被执行。
可以将default放在switch语句的任何位置,但通常放在最后。

4、应用场景

当需要根据一个变量的不同取值执行不同的操作时,switch语句非常有用。
例如,根据月份打印不同的季节、根据用户输入的操作码执行不同的功能等。

5、示例

以下是一个示例,根据输入的数字打印相应的星期几:

import java.util.Scanner;

public class SwitchExample {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入一个数字(1-7):");
        int dayOfWeek = scanner.nextInt();

        switch (dayOfWeek) {
            case 1:
                System.out.println("星期一");
                break;
            case 2:
                System.out.println("星期二");
                break;
            case 3:
                System.out.println("星期三");
                break;
            case 4:
                System.out.println("星期四");
                break;
            case 5:
                System.out.println("星期五");
                break;
            case 6:
                System.out.println("星期六");
                break;
            case 7:
                System.out.println("星期日");
                break;
            default:
                System.out.println("输入错误,请输入 1-7 之间的数字。");
        }
    }
}

总结

笔记又暂且到这里,下次学习完毕将更新

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值