目录

计算机考研C语言

计算机考研C语言

1、第一个C程序

helloC


#include <stdio.h>


int main()

{
   printf("hehe");
   return 0;

}

https://i-blog.csdnimg.cn/direct/f257eacb2d6a4223ad650bb3230068f6.png

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

main函数多种写法

https://i-blog.csdnimg.cn/direct/208d0c674ac84c0f9e24df56c2ac057a.png

https://i-blog.csdnimg.cn/direct/4bcecf6fe3c4407f9c14ad78234ce957.png

https://i-blog.csdnimg.cn/direct/6dbfca0fcce344b5b2849ed7c10cd051.png

2、数据类型

2.1 字符char

https://i-blog.csdnimg.cn/direct/c62f91726b044af298fda1d144e837d5.png

2.2 整型int

https://i-blog.csdnimg.cn/direct/5c6a2157a33f410782a6b5f4d5ae6be9.png

2.3 浮点型float/double

https://i-blog.csdnimg.cn/direct/8e92dbae290c4c65b4fe86b331b600c6.png

2.4 布尔类型_Bool

https://i-blog.csdnimg.cn/direct/9bdb83700ba14070891488bb0c3bf3eb.png

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 ),否则它只能操作一个临时的副本。

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

占位符

https://i-blog.csdnimg.cn/direct/758a5a40b4f44817aa606ad68d3aafaa.png

https://i-blog.csdnimg.cn/direct/19c9c4c1c7f8438ba0a26dca38f4bf56.png

用赋值忽略符

https://i-blog.csdnimg.cn/direct/3dffb51c9598489cac2488f16aa7167f.png

https://i-blog.csdnimg.cn/direct/641a870bb7b34c76a8e39aa859756f8e.png

4、getchar函数

#include <stdio.h>


int main()

{
  char ch = getchar();
  printf("字符%c", ch);

  return 0;

}

https://i-blog.csdnimg.cn/direct/9e82ab1b70384cab838a1d8863ad2f84.png

#include <stdio.h>


int main()

{
    int len = 0;
  while(getchar() != '\n') {
    len++;
  }
printf("长度%d", len);
  return 0;

}

https://i-blog.csdnimg.cn/direct/24ba5095333744ea987ada2c455db8fc.png

5、sizeof函数

https://i-blog.csdnimg.cn/direct/b9b975334a6a457d857eb27af96ca995.png

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);

}

https://i-blog.csdnimg.cn/direct/cd12ea3856124d679bfb3c349991a038.png