C_study - 第4天

日期: 星期六, 2024年3月9日

时间: 下午5:04

函数

         函数是C语言中用于封装代码以实现特定功能的基本构建块。函数可以有参数和返回值,使代码模块化,易于重用和管理。

示例代码:
#include <stdio.h>
// 函数定义
int Add(int x, int y){

    return x + y;

}
int main(){
    int num1, num2;
    scanf("%d %d", &num1, &num2);
    int sum = Add(num1, num2);
    printf("sum = %d\n", sum);
    return 0;
}

注意:
  • 函数定义之前或在同一文件的其他位置需要声明。
  • 参数类型和返回类型应明确指定。
  • main函数是程序执行的入口点,通常返回一个整型值,表示程序的退出状态。

 数组

数组是一组相同类型元素的集合,使用下标来访问。C语言中的数组下标从0开始

示例代码:
#include <stdio.h>
int main(){
    int arr[10] = {1,2,3,4,5,6,7,8,9,10};
    for(int i = 0; i < 10; i++){
        printf("%d\n", arr[i]);
    }
    return 0;
}

算术和位运算符:

C语言提供了丰富的算术运算符(+, -, *, /, %)和位运算符(&, |, ^, ~, <<, >>)

逻辑操作符:

C语言的逻辑操作符包括&&(逻辑与)、||(逻辑或)和!(逻辑非)。它们常用于条件判断。

条件和逗号表达式:

条件操作符(三目操作符):条件 ? 表达式1 : 表达式2。如果条件为真,则执行表达式1,否则执行表达式2。

逗号表达式:使用逗号分隔的表达式序列,整个表达式的值是最后一个表达式的值。

关键字:

C语言提供的关键字具有特殊意义,不能用作变量名、函数名等。这些关键字包括int, char, return, if, while等。

数据类型修饰符:

  • signed和unsigned用于指定整型变量的符号性。
  • static用于声明静态变量,静态变量的生命周期贯穿程序执行期间。
  • register建议编译器尽量将变量存储在CPU寄存器中。
  • sizeof操作符
  • sizeof是一个编译时操作符,用于计算变量或类型所占的字节数。
printf("%d\n", sizeof(int)); // 输出int类型的大小
  • static变量默认初始化为0。
  • register建议的使用应被视为优化的提示,而非强制要求,现代编译器通常能够自动选择寄存器分配。

static关键字

static关键字在C语言中有三种主要用途:

  1. 修饰局部变量:使局部变量的生命周期延长到程序结束,即局部变量只初始化一次,并在函数调用间保持其值。这本质上改变了变量的存储类型,使得它在程序的整个运行期间都存在。
  2. 修饰全局变量:限制全局变量的作用域,使之只能在定义它的源文件内部访问,这通过将全局变量的链接属性从外部链接改为内部链接来实现。
  3. 修饰函数:与修饰全局变量相似,使得函数只能在其定义的源文件内部被调用,将函数的链接属性从外部链接改为内部链接。

宏的定义与使用

宏是通过预处理器定义的一种指令,主要有两种用途:

  1. 定义符号:将某个标识符与一个值关联起来,实现文本替换。
  2. 定义函数宏:允许将一系列操作定义为宏,使得可以通过简短的宏调用来执行更复杂的操作或表达式。

示例中的宏定义和使用如下:

#define Add(x, y) (x + y)

这个宏定义了一个简单的加法操作,使用时,预处理器会将Add(a, b)替换为(a + b),然后进行计算。

extern关键字

extern关键字用于声明一个变量或函数是在另外一个文件中定义的,这样可以在多个文件之间共享变量或函数。示例中,extern关键字用于引用在其他文件中定义的变量和函数:

extern int g_val; extern int Add(int, int);

函数的返回类型

在C语言中,每个函数都有一个返回类型,指明该函数返回值的类型。如果函数不返回任何值,则应使用void作为返回类型。

内存和编号

  • 计算机的内存是通过地址进行编号和管理的。每个内存单元都有一个唯一的地址。
  • 根据计算机的位数(32位或64位),地址线的数量不同,这决定了计算机的最大寻址空间。32位计算机有32根地址线,可以寻址到232232个不同的地址;64位计算机有64根地址线,可以寻址到264264个不同的地址。

内存单元大小

  • 通常情况下,一个内存单元的大小是1个字节(Byte),等于8个比特位(Bit)。
  • 在C语言中,不同的数据类型在内存中占用的字节数不同。例如,一个int类型通常在32位系统中占用4个字节,在64位系统中也通常占用4个字节,但这可以根据不同的系统和编译器有所变化。

指针的使用

  • 指针是一个变量,其存储的是另一个变量的地址。
  • 通过使用&操作符,可以获取一个变量的地址。例如,&a获取变量a的地址。
  • 通过使用*操作符,可以进行解引用操作,即访问指针指向的内存地址中存储的值。例如,*pa是获取pa指针指向的地址中存储的值。

示例代码

int main(){
    int a = 10; // 定义一个int类型的变量a,并初始化为10
    int* pa = &a; // 定义一个指向int类型的指针pa,并将其初始化为a的地址
    printf("%p\n", pa); // 打印pa存储的地址(即a的地址)
    *pa = 20; // 通过指针pa修改a的值为20
    printf("%d\n", a); // 打印修改后的a的值,验证a的值已经被修改为20
    return 0;
}

  • 55
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小小毓

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

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

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

打赏作者

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

抵扣说明:

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

余额充值