使用监视器查看变量,使用内存读取内存地址和值

  1. 步骤
    1. 首先设置断点—-打开调试
    2. 监视栏输入取地址符以及变量名
    3. 将内存地址拖拽到内存区域,顶部第一行显示即为变量的值
    4. 调试栏选择下一条语句,变量 a 的值改变【 3—-> 5】
  2. 示意图

image.png

  1. code
    1. #include <stdio.h>
    2. #define PI 3 /* 符号常量 */
    3. int main() {
    4. int a = 3; /* 一个变量 */
    5. a = 5; /* */
    6. //PI = 10;
    7. printf("%d\n", PI);
    8. }

    字符常量

直接打印,可得其输出

image.png

Scanf函数使用时报错

  1. 原因

不安全的函数

  1. 错误样式

image.png

  1. 解决方案

添加如下宏定义

  1. _CRT_SECURE_NO_WARNINGS
  1. 全部代码[注意:宏定义必须放置于代码顶部] ```c

    define _CRT_SECURE_NO_WARNINGS

    include

int main() { int a; / 一个变量 / scanf(“%d”, &a); / 一定要在变量前加入 & 符号 / printf(“a = %d\n”, a); }

  1. 5. 细节[通过将 scanf获取到的值赋值给一个变量,取消绿色波浪线标记]
  2. ![image.png](https://cdn.nlark.com/yuque/0/2022/png/12593872/1645669442168-987c05ea-0dfe-4a45-9a5c-a0207d3dc52c.png#clientId=ue0e8603b-50a1-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=516&id=u0bba9741&margin=%5Bobject%20Object%5D&name=image.png&originHeight=1031&originWidth=1920&originalType=binary&ratio=1&rotation=0&showTitle=false&size=207535&status=done&style=none&taskId=u61b7382b-7446-4ec7-9661-0bf23fafd4f&title=&width=960)
  3. 6. 同时获取多个值的输入
  4. ```c
  5. #define _CRT_SECURE_NO_WARNINGS
  6. #include <stdio.h>
  7. int main() {
  8. int a, b, ret; /* 一个变量 */
  9. ret = scanf("%d%d", &a, &b); /* 一定要在变量前加入 & 符号 */
  10. printf("a = %d, b = %d\n", a, b);
  11. }
  1. 直接累加 ```c

    define _CRT_SECURE_NO_WARNINGS

    include

int main() { int a, b, ret; / 一个变量 / ret = scanf(“%d%d”, &a, &b); / 一定要在变量前加入 & 符号 / printf(“%d\n”, a + b); }

  1. 8. 细节 --- 小端表示内存地址 ---- 低位在前
  2. ![image.png](https://cdn.nlark.com/yuque/0/2022/png/12593872/1645696638072-8cf115e3-a33d-4d37-a47b-120df80758b3.png#clientId=u8f8de9cb-09d9-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=499&id=u63681882&margin=%5Bobject%20Object%5D&name=image.png&originHeight=997&originWidth=1920&originalType=binary&ratio=1&rotation=0&showTitle=false&size=208030&status=done&style=none&taskId=u001f1cac-3ec9-4efd-adc4-06fac83249c&title=&width=960)
  3. 9. 1
  4. <a name="Pl0mQ"></a>
  5. ## 以十进制输出某个整数
  6. code
  7. ```c
  8. #include <stdio.h>
  9. #include <stdlib.h>
  10. int main() {
  11. //int i = 123;
  12. int i = 0x7b;
  13. printf("%d\n", i); /* 以十进制输出某一个整型数 */
  14. }

image.png

位与字节

1 Byte = 8 bit

  1. 进程地址空间

所谓进程地址空间(process address space),就是从进程的视角看到的地址空间,是进程运行时所用到的虚拟地址的集合。

  1. 内存上限【以int 4字节为例】

image.png

输出浮点数

  1. 常规输出 ```c

    include

    include

int main() { float f = 1.234; printf(“%f\n”, f); / 以浮点数形式输出 / return 0; }

  1. 2. 科学计数法
  2. ```c
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5. int main() {
  6. float f = 3e3;
  7. printf("%f\n", f); /* 以浮点数形式输出 */
  8. return 0;
  9. }

image.png

浮点数空间占用—-四个字节

单目操作符: sizeof()获取变量占用字节的大小

code

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int main() {
  4. float f = 3e3;
  5. printf("%f\n", f); /* 以浮点数形式输出 */
  6. return 0;
  7. }

image.png

字符类型

code1

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int main() {
  4. float f = 3e3;
  5. printf("%f\n", f); /* 以浮点数形式输出 */
  6. char c = 'a';
  7. printf("%c\n", c); /* 以字符形式输出 */
  8. return 0;
  9. }

code2

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int main() {
  4. float f = 3e3;
  5. printf("%f\n", f); /* 以浮点数形式输出 */
  6. char c = 'a';
  7. printf("%c\n", 97); /* 以字符形式输出 */
  8. return 0;
  9. }

image.png

image.png

image.png