C语言要点3

一个函数的所有变量都存储在自己独有的存储空间里。函数的参数和返回值在调用函数和被调用函数中都各保留一份。使用参数或返回值实现信息传递都是单向的。调用函数保留的参数变量叫做实参被调用函数保留的参数变量叫做形参。


栈是应用程序用来记录所有函数内部变量的地方,每个函数都在其中占据一段


return语句用于结束一个函数的执行,exit(0)函数可以在程序中任何地方终止整个程序的运行。
#include<stdlib.h>


使用循环逐步逼近最终结果的方法叫做递推,使用函数不断重复调用自己的方法叫做递归。


使用数组做函数参数可以让被调用函数修改调用函数内部的变量数据,因为数组做参数时被复制的是数组的地址而不是数组内部的变量。


数组作为函数参数使用时被调用函数得到的只是一个地址数据,这个地址与数组中的变量个数无关。


使用数组作为参数的时候需要多提供一个参数,用来表示数组中变量的个数。


变量可以有三个不同的声明位置,声明在所有函数之外的变量叫做全局变量,声明在函数里边的变量叫做局部变量,声明在大括号里边的变量叫做块变量。


变量的作用域指的是代码中可以使用这个变量的范围的总和,生命周期指变量可以被使用的时间范围的总和。


全局变量的作用域是整个程序的所有代码,生命周期是整个程序的运行时间。


局部变量的作用域是它所声明它的那个函数内。生命周期也是函数的运行期间。
块变量的作用域是声明它的那个大括号内,生命周期是那个大括号内代码的运行期间。


不同级别的变量是可以重名的,程序中使用的变量如果出现重名现象则选择最近的那个变量使用。


static关键字可以写在变量声明之前,如果这个变量是全局变量则它的作用域缩小成声明它的.c文件,如果这个变量是局部变量则它的生命周期把扩展到整个程序运行期间。


void push(int shu_zi);         //放置数据
void pop();                    //丢弃一个数据
int peak();                    //获得一个数据
int full();                    //是不是满了
int empty();                   //是不是空的


应用程序在运行时是分段落存储的。运行时所有语句被放置在代码段里,代码段在运行时是不可以修改的,如果修改会发生段错误。所有函数中大多数变量是在栈中分配的,当一个函数运行时它内部的变量出现在栈中一旦它结束运行了这些变量所占有的位置就被回收了。栈的分配和回收完全由计算机控制,程序中的代码无法干涉。堆是另外一个用来存储数据的段落。堆中的所有变量由程序管理。程序没有让计算机回收不再使用的堆中变量叫做内存泄露。堆中变量的生命周期由程序控制。


static
register关键字可以用来声明变量,这种变量对计算机影响非常大。
volatile关键字也可以用来声明变量,同时有多个程序使用一个变量的时候应该使用这个关键字声明这个变量。

const关键字声明的变量是不可以修改内容的,它们只能在声明的时候被赋值。


静态局部变量的声明语句在整个程序执行过程中只会执行一次,所以也只会被初始化一次。


指针变量用来记录内存中的地址,地址本身是32个二进制数字构成的整数。每个地址数据指向特定类型的数据。


NULL是数字0,代表空指针。这个地址是不可以使用的,可以通过判断指针内部的地址数据是不是NULL来决定指针是否可以使用。


不可以把函数的局部变量的地址作为返回值使用,静态局部变量除外。


二级指针用来记录一级指针变量的地址,二级指针变量声明的时候需要两个*。


对数组名称取地址和对指针变量取地址的效果不同。
对数组名称计算得到的地址数据和一级指针的使用方式一样。


字符串是内存中一串连续的字符变量,其中最后一个变量必须是字符'\0'(字符'\0'和数字0是一回事)。在程序中有两种不同的表示字符串的方式,一种使用字符数组,另一种是使用双引号内部的文字内容(字面值)。这两种表示方式的字符串在内存中的存储位置是不同的。这两种方式表示的字符串都可以用一个记录首字符地址的字符指针表示。


用字面值表示的字符串不可以修改,只要内容一样不论在程序中写多少遍都是同一个字符串,在内存中占据的位置都是一样的。


使用scanf函数可以读取一个字符串到数组中,但是这种方式遇到空格字符后就停止了。gets函数可能造成溢出所以不要使用。fgets是安全的,但是如果读入的字符格式少的话会在数组最后保留一个\n字符。


strcat可以把两个字符串合并,但是结果可能超过有效范围。strncat函数可以避免结果溢出。


strcpy函数可以把一个字符串的内容复制到另一个字符串中。strncpy可以避免结果溢出。


strcmp用于比较两个字符串的大小,strncmp函数只比较两个字符串的前n个字符。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值