一、听课标准

1、选择法排序

2、会简单封装函数

3、数组做函数参数会退化为一级指针

  a、数组做函数参数时,应该吧数组元素个数也传递给函数

  b、形参中的数组,编译器把它仿作指针处理,c语言特色

  c、实参中的数组,和形参中数组本质不一样

void   fun(int a[]);//4字节
main(){
    , ,  };//12字节
    fun(a);
}

二、数据类型

1、类型的本质:固定内存大小的别名

2、数据类型的作用:编译器预算对象(变量)分配的内存空间大小

  int a;//告诉c编译器分配4个字节的内存

3、数据类型可以通过typedef起别名

4、可以通过sizeof()测类型大小

5、void ,无类型

1)、函数参数为空,定义函数时,可以使用void修饰:int fun(void)
2)、函数返回值没有返回值,使用void修饰
3)、不能定义void类型的普通变量:void a;//error,无法确定类型,不同类型分配空间不一样
4)、可以定义void*变量:void *p;//ok,32永远是4字节,64位永远是8字节
5)、数据类型本质:固定内存块大小别名
6)、void *p万能指针,函数返回值,函数参数

malloc(配置内存空间)

相关函数 calloc, free, realloc, brk

表头文件 #include<stdlib.h>

定义函数 void * malloc(size_t  size);

函数说明 malloc() 用来配置内存空间,其大小由指定的size决定

返回值  若配置成功则返回一指针,失败则返回NULL

范例 void  p = malloc(1024);/*  配置1k的内存 */

三、扩展知识

1)分文件时,头文件防止头文件重复包含

#pragma once

2)让c代码可以在c++编译器编译运行

// __cpluscplus 是编译器提供好的宏,不是自定义的

#ifdef __cpluscplus

extern "C"{

#endif //__cpluscplus

//函数的声明

#ifdef __cpluscplus

}

#endif //__cplusplus

四、变量

1、变量的本质;内存空间的别名

2、必须通过数据类型定义变量

3、变量相当于门牌号,内存相当于房间,通过门牌号找到房间,通过变量找到所对应的内存

4、变量的赋值:1)直接 2)间接

  

int a;
a=;
;
p=&a;//指针指向谁,就把谁的地址赋值给指针
*p=;//间接赋值

4、重点:没有变量,哪来内存,没有内存,拿来内存首地址

5、变量三要素(名称、大小、作用域),变量的生命周期

五、内存四区(栈区、堆区、全局区、代码区)

1、栈区:系统扥配空间,系统自动回收,函数内部定义的变量,函数参数,函数结束,其内部碧昂量声明周期结束

2、堆区:程序员动态分配空间,有程序员动手释放,没有手动释放,分配的空间一直可用

3、全局变量(全局变量和静态变量,里面有分为初始化区和为初始化区,文字常量区:字符常量):整个程序运行完毕,系统自动回收

4、内存四区模型图(c语言学好指针的关键)

5、a)栈区地址生长方向:地址有上往下递减

  b) 堆区地址生长方向:地址由下往上递增

  c) 数组buf,buf+1 地址永远递增

六、函数调用模型

1、程序各个函数运行流程(压栈弹栈、入栈出栈、先进后出)

七、指针也是一种数据类型

1、指针变量也是一种变量,也有空间,32位程序大小为4字节

int *p=0x1122;

2、*操作符,*相当于钥匙,通过*可以找到执政所指向的内存区域

;
int *p=NULL;
p=&a;//指针指向谁,就把谁的地址赋值给指针
*p=;//*放=左边,给内存赋值,写内存
int b=*p;//*放=右边,取内存的值,读内存

c语言提高篇 第一天的更多相关文章

  1. 嵌入式学习笔记(综合提高篇 第一章) -- 利用串口点亮/关闭LED灯

    1      前言 从踏入嵌入式行业到现在已经过去了4年多,参与开发过的产品不少,有交换机.光端机以及光纤收发器,停车场出入缴费系统,二维码扫码枪,智能指纹锁以及数字IC芯片开发等; 涉及产品中中既有 ...

  2. C语言提高 (1) 第一天 数据类型本质与内存四区

    (物联网的分层的概念 b/s c/s 结构 习惯: 在C语言 0 函数执行成功 <0是错误 >1做一些返回值处理 3 课前准备 工作经验,记录 4 数据类型的本质 数据类型的本质是固定大小 ...

  3. 明解C语言 入门篇 第一章答案

    练习1-1 #include <stdio.h> int main() { int a; a = 15; int b; b = 37; int c; c = a - b; printf(& ...

  4. 明解C语言 中级篇 第一章答案

    练习1-1 #include <stdio.h> #include<stdlib.h> int main() { srand(time()); ; printf("您 ...

  5. java提高篇(二)-----理解java的三大特性之继承

    在<Think in java>中有这样一句话:复用代码是Java众多引人注目的功能之一.但要想成为极具革命性的语言,仅仅能够复制代码并对加以改变是不够的,它还必须能够做更多的事情.在这句 ...

  6. java提高篇(二)-----理解java的三大特性之继承

    在<Think in java>中有这样一句话:复用代码是Java众多引人注目的功能之一.但要想成为极具革命性的语言,仅仅能够复制代码并对加以改变是不够的,它还必须能够做更多的事情.在这句 ...

  7. (转)java提高篇(二)-----理解java的三大特性之继承

    在<Think in java>中有这样一句话:复用代码是Java众多引人注目的功能之一.但要想成为极具革命性的语言,仅仅能够复制代码并对加以改变是不够的,它还必须能够做更多的事情.在这句 ...

  8. Java 学习笔记提高篇

    Java笔记(提高篇)整理   主要内容: 面向对象 异常 数组 常用类 集合 IO流 线程 反射 Socket编程 1.  面向对象 1.1包 用来管理Java中的类, 类似文件夹管理文件一样. 因 ...

  9. Java提高篇之理解java的三大特性——继承

    在<Think in java>中有这样一句话:复用代码是Java众多引人注目的功能之一.但要想成为极具革命性的语言,仅仅能够复制代码并对加以改变是不够的,它还必须能够做更多的事情.在这句 ...

随机推荐

  1. JavaScript 代码简洁之道

    摘要: 可以说是<Clean Code>的JS代码示例了,值得参考. 原文:JavaScript 代码简洁之道 作者:缪宇 Fundebug经授权转载,版权归原作者所有. 测试代码质量的唯 ...

  2. jQuery.parseJSON()函数详解

    jQuery.parseJSON()函数用于将格式完好的JSON字符串转为与之对应的JavaScript对象. 所谓”格式完好”,就是要求指定的字符串必须符合严格的JSON格式,例如:属性名称必须加双 ...

  3. Android 简单实现控件的拖动

    控件的拖动,使用到一个监听事件 setOnTouchListener:XML代码: <?xml version="1.0" encoding="utf-8" ...

  4. PM过程能力成熟度2级

    当PM意识到自己不再是程序员后,就会在项目管理方面,逐渐达到过程能力成熟度1级.尽管这种亲身经历会带给PM管理的信心,但从项目的层面来说,整体还是混沌的,PM在经历过1级的阶段性胜利后,将面临更多的问 ...

  5. Linux系统下 MySQL 安装 指南(5.7和8.0 版本)

    一. 准备工作 1 删除本地centos7中的mariadb: 查看系统中是否已安装 mariadb 服务: rpm -qa | grep mariadb 或 yum list installed | ...

  6. C#的自动拼接Sql语句Insert方法及思路

    思路: 1.想想插入语句,大概是这样的一个框架:INSERT INTO 表名 (数据库列名) values (值) 2.这里要3个变量是不固定的,分别是:表名.数据库列名.值: a.表名我们这里很容易 ...

  7. c/c++ 继承与多态 继承中的public, protected, private

    问题:类B私有继承类A,类A有个protected成员,那么在类B的成员函数里是否可以使用类A的protected成员? 可以使用. 估计有的同学说不对吧,类B都私有继承了类A了,怎么还能访问类A的p ...

  8. RX 和 TX

    我们在ifconfig 查看网卡配置时或者嵌入式开发的时候,经常会看到rx/tx缩写,其含义如下: RX==receive,接收,从开启到现在接收封包的情况,是下行流量. TX==Transmit,发 ...

  9. "'cl' 不是内部或外部命令,也不是可运行的程序"解决方案

    最近使用VS2012+Qt5.1+QtCreator2.8.1来搭建Qt的开发环境(之前有用MinGW编译的经历,经常碰到gdb调试器崩溃的问题),全部换成想用VC的编译器和调试环境,但是觉得QtCr ...

  10. LeetCode算法题-Two Sum IV - Input is a BST(Java实现)

    这是悦乐书的第280次更新,第296篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第148题(顺位题号是653).给定二进制搜索树和目标数,如果BST中存在两个元素,使得 ...