计算机考研C语言

embedded/2025/3/14 22:22:06/

C语言程序设计从入门到精通【2025完整版】考研复试 嵌入式 计算机二级 软考 专升本也适用_哔哩哔哩_bilibili

1、第一个C程序

helloC


#include <stdio.h>int main(){printf("hehe");return 0;}

每个C语言程序不管有多少行代码,都是从main函数开始执行的,main函数是程序的入口,main函数也被叫做:主函数。main 前面的int表示main函数执行结束的时候返回-一个整型类型的值。所以在main函数的最后写return 0;正好前后呼应。
库函数:https://cplusplus.com/reference/clibrary/

main函数多种写法  

2、数据类型

2.1 字符char

2.2 整型int

2.3 浮点型float/double

2.4 布尔类型_Bool

3、scanf函数  

#include <stdio.h>int main(){int score = 0;printf("请输入文字");scanf("%d", &score);printf("成绩为:%d\n", score);return 0;}

&符号是取地址运算符,它的作用是获取变量在内存中的存储地址。  

scanf函数需要知道变量在内存中的具体位置,才能将用户输入的值写入对应的内存空间

1. 变量名的本质

当你声明 int score = 0; 时,编译器会做两件事:

  1. 分配内存:为 score 分配一块内存空间(假设地址是 0x1000)。
  2. 绑定名称:将变量名 score 与地址 0x1000 关联起来,后续所有对 score 的操作(读取或写入)都通过这个地址完成。

2. 直接赋值时发生了什么?

当执行 score = 10; 时:

  • 编译器自动翻译:编译器知道 score 的内存地址是 0x1000,所以直接生成机器指令:​将值 10 写入地址 0x1000
  • 无需手动操作地址:变量名 score 已经隐含了地址信息,因此不需要用 & 去取地址。

3. 为什么 scanf 需要 &

scanf 是一个函数,它的工作机制不同:

  • 函数参数传递:C语言默认是“值传递”,即函数接收的是参数的副本,而非原始数据。
  • 必须显式传递地址:要让 scanf 修改外部变量 score,必须告诉它 score 的地址(&score),否则它只能操作一个临时的副本。

简单理解:形参要想改变实参的值,必须加上&  

占位符

用赋值忽略符

4、getchar函数

#include <stdio.h>int main(){char ch = getchar();printf("字符%c", ch);return 0;}

#include <stdio.h>int main(){int len = 0;while(getchar() != '\n') {len++;}
printf("长度%d", len);return 0;}

5、sizeof函数

6、指针  

#include <stdio.h>void main(){int a = 10;int *ptr = &a; // 这里的*ptr表明声明一个指针变量,存储a的地址// a(变量)  → 内存地址:0x1000,存储的值:10// ptr(指针) → 内存地址:0x2000,存储的值:0x1000(即 a 的地址)printf("打印指针里面存储的地址%d\n", ptr);printf("打印指针里面存储的地址里面的值%d", *ptr);}


 


http://www.ppmy.cn/embedded/172127.html

相关文章

pytorch常用参数初始化

一、基础初始化方法 1. 全零初始化&#xff08;Zero Initialization&#xff09; • 方法&#xff1a;权重初始化为0&#xff08;不推荐用于隐藏层&#xff09; • 问题&#xff1a;导致所有神经元对称更新&#xff0c;失去多样性 • PyTorch代码&#xff1a; python nn.init…

ThinkPHP框架中各模块通过MVC架构和扩展机制协同工作形成完整的请求处理流程

在ThinkPHP框架中&#xff0c;各模块通过MVC架构和扩展机制协同工作&#xff0c;形成完整的请求处理流程。以下是核心模块的功能及协作关系分析&#xff1a; 一、路由&#xff08;Route&#xff09; 作用&#xff1a; 负责将HTTP请求的URL映射到具体的控制器和方法&#xff0c…

SpringBoot 统一异常处理

首先定义一个统一管理所有异常的类&#xff0c;加上注解RestControllerAdvice定义处理不同异常的方法&#xff0c;加上注解 ExceptionHandler RestControllerAdvice public class GlobalExceptionHandler {private static final Logger log LoggerFactory.getLogger(GlobalExc…

【python|二分|leetcode441】一题搞清楚二分区间问题---闭区间、左闭右开、左开右闭、全开区间

every blog every motto: Although the world is full of suffering&#xff0c; it is full also of the overcoming of it 0. 前言 一题搞清楚二分区间问题—闭区间、左闭右开、左开右闭、全开区间 0.1 题目&#xff1a;Problem: 441. 排列硬币 你总共有 n 枚硬币&#x…

06-基于vs2022的c语言笔记——控制流

目录 往期精彩回顾&#xff0c;c语言笔记正在更新中&#xff01;&#xff0c;敬请期待&#xff01; 前言 6-1if switch语句 6-1-1if语句 0.if语句的难度与上一章表达式的知识你是否掌握透彻息息相关&#xff0c;因此在学习之前务必好好复习表达式的知识 1.首先介绍什么是…

oXygen XML Editor—— XML编辑与结构化内容管理的优秀工具

Oxygen XML Editor是用于XML创作和开发的重要工具&#xff0c;为所有用户&#xff08;从初学者到专家&#xff09;量身定制的&#xff0c;它是通用的、跨平台的&#xff0c;并且可以作为独立应用程序和Eclipse插件使用。凭借对XML技术的强大支持&#xff0c;它提供了易于创建、…

Java中常见的PO、VO、DAO、BO、DO、DTO、POJO、Query类解释(通俗易懂)

文章目录 先点击收藏和点赞,切勿白嫖,感谢一丶PO(persistant object)持久对象二丶VO(value object)值对象三丶DAO(Data Access Objects) 数据访问对象接口四丶BO/DO(Business Object) 业务对象层五丶DTO(Data Transfer Object) 数据传输对象六丶POJO(Plain Old Java Objects) 简…

【算法】二叉树的递归遍历

前序遍历 void preOrder(Node *node){if(node ! nullptr){cout << node->data_ << " ";preOrder(node->left_);preOrder(node->right_);}} 中序遍历 void inOrder(Node *node){if (node ! nullptr){inOrder(node->left_);cout << n…