课堂笔记

 

 

关系运算符:Relational operators

<,<=,>,>=,==,!=

计算关系是否成立

 

逻辑关系符: Logical operators

Python:and/or/not 

C: &&/ || / !

 

 

程序中的条件:

arithmetic operation 算术运算

logical operation 逻辑运算

relational operation 关系运算

 

循环

loop/repetition :循环

iteration : 迭代

①循环条件(condition):真进假出

②初始语句 条件真 进

③调整语句  条件假 出

 

Python的逗号

 

for i in "Hello World!":
print i,

输出:H e l l o   W o r l d !

 

//Python 中的 for循环与其说是for循环不如说是for in循环

条件控制循环 condition-controlled-repetition:while

计数器控制的循环  counter-controlled-repetition :for

 

 

 C函数

  • 函数声明:告知编译器,函数基本信息
  • 函数定义:通过编程实现函数的功能
  • 函数调用:通过调用,运行该函数
  • 定义-》声明-》调用

 

C函数定义

  • 基本形式:

     返回值类型,函数名称(参数列表){

     }|

    【int,char,float,void(空)】

2021/11/19

 

 

python函数定义和调用

  • 先定义(def)
  • 再通过函数名调用
  • 调用时传递参数
  • 调用执行的是函数体(语句序列)
  • 调用产生返回值
  • 函数定义可置于程序中任何地方,但必须在调用之前

 2021/11/24

 

变量

  • 变量 variable 的作用域 scope
  • 局部变量 local:在定义它的函数内有效,但是函数返回后失效。“在函数内定义的变量”,即在一个函数内部定义的变量,只在本函数范围内有效。
  • 全局变量 global:在整个工程文件内都有效;“在函数外定义的变量”,即从定义变量的位置到本源文件结束都有效。由于同一文件中的所有函数都能引用全局变量的值,因此如果在一个函数中改变了全局变量的值, 就能影响到其他函数中全局变量的值。
  • 若全局变量和局部变量同时存在,则局部优先
  • 全局变量可用于在不同模块间传递,带回数据,但非必要不使用

 

lifetime 变量的生存期

storage class:自动类型 auto 一般不加特殊标识的变量均为auto 用完就释放

                        静态类型 static 用完不释放

2021/11/27

 

 

command line 命令行

form 表单 

visualization 可视化

 

 

list列表/array数组

数组和列表都提供了一种数据结构,表达批量数据

没有数组和列表之前 所有数据都依赖变量(variate)通常用到两种变量,一种变量表示数据,一种变量用来控制程序。

数据/列表结构:①批量数据

                          ②连续存放(线性)目的:快速访问

 

数组和列表的区别

①数组要求元素类型统一,列表可混搭(泛类型语言)

②数组不具有开放性,长度不可改变。Python中的list可在运行期间动态(dynamics)改变长度。

 

数组和列表的相同:

批量存储,单个访问(名称加下标)(可用循环辅助进行单个访问)

 

二维数组 :

①维度的提升代表逻辑上和形式上有所改变,而不代表存放方式的改变,本质上来说二维的存放方式仍是一维的

② 行 row  列 column

 

指针:

  • 指针与内存(memory)访问有关
  • 指针是系统级的(与之对应的是应用级)
  • 嵌入式系统通常以C语言进行系统级程序设计
  • 指针即内存地址,内存中所有的空间是按字节编号的

学习指针只需要搞清楚:什么地址存了什么数据

“ * ” 是间接访问操作符(Indirect access)

       与平常的间接访问不同 指针变量的间接访问既可以“读”,也可以“写”。

       通过指针变量间接地改变了指向变量的值,体现了指针的隐蔽性。

 

指针函数的三步:①参数必为地址

                      ②函数中使用间接访问

                      ③传地址

 

指向一维数组的指针:int(*p)[10]    (pointer to array)

指针的数组:int*p[10]    (array of pointer)

二级指针 pointer to pointer

 

字符串的操作:

1.存储方式:

              (1)字符串在C中是通过一维数组来存储的。

                       #define N 100

                       char str[N]

              (2)字符串在Python中是通过序列sequence(一种list)来存储。

                        s=“Good Morning”

 

2.C语言中存储时的标志符号:‘\0’结束符号 可通过‘\0’截断函数

3.字符串中输入/输出操作:

       (1)C语言:char str[200];

                              scanf("%s",str);   printf("%s",str);  //scanf默认以空格或回车字符作为结束符号

                              gets(str);     puts(str) //gets以回车字符作为结束符号

       

       (2)Python:raw_input()

                               input

 

结构体 Structure:将所有(相关的)数据项group为一个新的类型

         是一种组合、构造的数据类型,一个数据类型中可能包含多个其他的标准数据类型

         最大的作用是运用二维数组

         结构体中仍可套用结构体

Table:per "row"→ record

普通变量int只有一个field 结构体有多个member

/*

共用体 Union(共用体在一般的编程中应用较少)

结构体和共用体的区别在于:结构体的各个成员会占用不同的内存,互相之间没有影响;而共用体的所有成员占用同一段内存,修改一个成员会影响其余所有成员。
结构体占用的内存大于等于所有成员占用的内存的总和(成员之间可能会存在缝隙),共用体占用的内存等于最长的成员占用的内存。共用体使用了内存覆盖技术,同一时刻只能保存一个成员的值,如果对新的成员赋值,就会把原来成员的值覆盖掉。

*/

动态内存分配 Dynamic Memory Allocation

1.malloc() 内存分配(memory allocation)

  C 库函数 void *malloc(size_t size) 分配所需的内存空间,并返回一个指向它的指针,如果请求失败,则返回 NULL。

2.calloc() 按个数分配

  C 库函数 void *calloc(size_t nitems, size_t size) 分配所需的内存空间,并返回一个指向它的指针。malloc 和 calloc 之间的不同点是,malloc 不会设置内存为零,而 calloc 会设置分配的内存为零

3.realloc() 重新分配

  C 库函数 void *realloc(void *ptr, size_t size) 尝试重新调整之前调用 malloc 或 calloc 所分配的 ptr 所指向的内存块的大小。

4.free() 释放

  C 库函数 void free(void *ptr) 释放之前调用 calloc、malloc 或 realloc 所分配的内存空间。

 

5.malloc和calloc的区别:

malloc一个形参,因此如果是数组,必须由我们计算需要的字节总数作为形参传递
用malloc只分配空间不初始化,也就是依然保留着这段内存里的数据,
calloc 2个形参 ,因此如果是数组,需要传递个数和数据类型
而calloc则进行了初始化,calloc分配的空间全部初始化为0,这样就避免了可能的一些数据错误。

 

动态链表 dynamic linked list

 

 

 

 

 

 

 

 

 

 

 

posted @   Inmata  阅读(88)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示