zoukankan      html  css  js  c++  java
  • C语言学习-知识点补充


    • 文章内的内容是复习时针对之前没有整理到的内容的补充,如有错误或不详,敬请指出。

    学习重点

    • 流程控制
    • 函数
    • 指针
    • 静态内存和动态内存

    内存的分配与释放

    • 分配内存
      • 操作系统为程序分配一块内存空间,程序具有对这块内存的读写权限
    • 释放内存
      • 操作系统收回为程序分配的内存空间,并不会清理内存中的数据,只收回程序对该存储空间的读写权限

    变量初始化

    • 变量必须初始化
      • 不初始化,会使用垃圾数据填充,可能会导致计算结果有误
    • 系统如何执行int i = 5;
      • 软件请求为变量i分配存储空间,该存储空间用于存放i变量
      • 之后对变量i的操作即对这块存储空间进行读写操作
      • 将数值5存放在分配给变量i的存储空间中

    数据基本类型及输出

    • 基本类型
      • intlong intshort intcharfloatdouble
    • printf对不同数据类型的输出
      • intshort int%d
      • long int%ld
      • char%c
      • float%f
      • double%lf
      • %p:对变量的地址进行输出
      • %e:以科学计数法输出
    • 字符串的输出%s
    • 以八进制数输出%o
    • 以十六进制输出%x%#X
    • printf输出
      • :换行
      • :空格
      • %m.nf:表示输出double类型的数据时,总共占 m 个字符,保留 n 位小数
        • 如果输出的结果不够 m 位,则用空格补充,m 为负数表示把空格补充在数值后面
    • char对字符的处理
      • 大写字母加32可以得到它的小写字母
      • 小写字母减32可以得到它的大写字母
      • putchar():输出字符变量
      • getchar():从键盘输入字符变量

    # include <stdio.h>
    
    int main(void)
    {
    	int a;
    
    	printf("请输入一个大写字母:");
    	a = getchar();
    
    	a = a + 32;
    
    	putchar(a);
    	putchar('
    ');
    
    	return 0;
    }
    
    /*运行结果*/
    请输入一个大写字母:Q
    q
    Press any key to continue
    
    • 强制数据类型转换
      • (数据类型)(表达式):强制将表达式的计算结果转换为前面的数据类型
      • 可以用于计算输出一个数的每个位上的数值

    函数与指针

    • 函数的优点
      • 避免重复操作
      • 有利于程序的模块化
    • 指针,地址,指针变量
      • 指针和地址是相同的,表示内存单元的编号
      • 指针变量是存放内存单元编号的变量
    • static作用
      • 可用作函数和变量的前缀,用于隐藏函数
      • 对于变量
        • 保持变量内容的持久,全局变量和static变量存储在静态存储区,静态存储区的变量只会在程序运行时完成初始化,也是唯一的一次初始化
        • 默认初始化为0

    /*static用法*/
    # include <stdio.h>
    
    int func(int a, int b);
    
    int main(void)
    {
    	int k = 4,m = 1, p;
    
    	p = func(k, m);    //8
    	printf("p1 = %d
    ", p); 
    
    	p = func(k, m);
    	printf("p2 = %d
    ", p);
    
    	p = func(k, m);
    	printf("p3 = %d
    ", p);
    
    	return 0;
    }
    
    int func(int a, int b )
    {
    	static int m = 0, i = 2;
    	/*
    		static只有在第一次执行的时会初始化变量
    		函数结束后,变量不会被释放
    		下一次被调用时,变量不会被重新赋值,而是使用之前的值
    	 */
    	printf("m = %d	", m);
    	printf("i = %d
    ", i);
    	i += m + 1;        //2+0+1=3   3+8+1=12   12+17+1=30
    	m = i + a + b;     //3+4+1=8   12+4+1=17  30+4+1=35
    
    	return (m);
    }
    
    • 在func函数中,m和i只有第一执行时被赋值,之后再被调用时,使用的是之前的值
    /*运行结果*/
    m = 0, i = 2
    p1 = 8
    m = 8, i = 3
    p2 = 17
    m = 17, i = 12
    p3 = 35
    Press any key to continue
    

    静态内存与动态内存

    • 静态内存和动态变内存
      • 相同点:都需要分配内存空间
      • 不同点:
        • 静态内存是系统自动分配的,自动释放,不能手动释放,存储空间的分配是在栈中分配,函数终止后,分配给该变量的存储空间会被释放
        • 动态内存是手动分配的,手动释放,可以在程序运行的过程中手动分配和释放,存储空间实在堆中分配的

    数学公式

    • ex、log等数学运算
    • 前提:程序要写# include <math.h>这个头文件
    函数功能使用方法函数功能使用方法
    abs求整数 x 的绝对值int x;
    abs(x);
    exp求exdouble x;
    exp(x);
    fabs求整数 x 的绝对值int x;
    abs(x);
    pow求xydouble x, y;
    pow(x, y);
    sin求 sinx 的值double x;
    sin(x);
    sqrt x sqrt{x} x double x;
    sqrt(x);
    cos求 cosx 的值double x;
    cos(x);
    log求Inxdouble x;
    log(x);
    tan求 tanx 的值double x;
    tan(x);
    log10求lgxdouble x;
    log10(x);

    以上内容均属原创,如有不详或错误,敬请指出。
    
    做别人的宝贝,别来淌我这趟浑水。
  • 相关阅读:
    解决 git 同步时 Everything up-to-date
    vs2019 git Authentication failed for xxx
    vs2015发布项目到虚拟主机组策略阻止csc.exe程序问题
    vs2017 使用 reportviewer
    var,dynamic的用法
    水晶报表报无法在资源中找到报表,请重新创建项目 错误
    css隐藏元素的方法
    css-浮动与清除浮动的原理详解(清除浮动的原理你知道吗)
    正则并不适合严格查找子串
    浏览器加载、渲染过程总结
  • 原文地址:https://www.cnblogs.com/bad5/p/14633762.html
Copyright © 2011-2022 走看看