C语言 函数
2018-12-04 07:14:23来源:博客园 阅读 ()
内存属性:
1.大小
2.位置
int a; 默认方式 (段)
————————————————————————————————————————————————————————————————————————————————————————
内核空间 应用程序不许访问
------------------------------------------3g
栈空间 局部变量 读写 (运行时,函数内部使用的变量,函数一但返回,就释放,生存周期时函数内)
-----------------------
运行时的堆空间 malloc (运行时,可以自我管理的分配和释放的空间,生存周期由程序员觉得) 分配: malloc() ,一旦成功,返回分配好的地址给我们,只需要接受,对这个 地址的读法,由程序员把握,输入参数指定分配的大小,单位是B。
释放:free(p);
------------------------
全局的数据空间 (初始化的,未初始化的) (static为局部的全局数据段) 读写 data(全局初始化) bss(全局未初始化)
只读数据段 “ ” 字符串常量 只读 text (静态空间,整个程序结束时释放内存,生存周期最长)
代码段 code 只读 text
-------------------------
0x0 ;
————————————————————————————————————————————————————————————————————————————————————
分配:
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
输入参数
调用者 : 函数名 (数据) //实参
被调者: 函数的具体实现
函数的返回值 函数名(接受的数据) // 形参
实参以拷贝的的形式传递给形参:
--------------------------------------------------------------------------------------------------------------------------------------------------
地址传递:(用处:1,上层允许下层子程序修改其空间值;;2. 连续空间的传递)
swpa()将main中的AB值拷入自己的AB值中交换数值,其swpa()中AB值被交换,但不会影响到main() 中的AB值
swap()将ab的地址拷入,直接操作其地址的值,致使main()中ab的值也发生变化。
空间的读写 (节约内存,只需要知道首地址)
void fun (char *p); 该空间可能修改
void fun (const char *p) 只读空间
空间:首地址,结束地址(必须知道)
结束标志:字符空间:内存里面存放了0x00 (1B) while(p[i]==0) { };
非字符空间:0x00不能当成结束标志,必须有数量。 for (i = 0 ; i < len ; i++) { };
一般定义数组定义为unsigned char buf [];
void * : 非字符空间的标识符; 形参可以代表任何形式 (char ,int,struct 等)。
void * 在具体使用中一定要转化成具体的类型
实际中:如果操作整个空间,定义为void * ; 如果是值的修改,定义为具体。
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
连续空间的传递:
1,数组
数组名 -- 标签
实参:
int abc[10];
fun (abc)
形参:
void fun(int *p) == void fun (int p[10])
2.结构体
结构体变量
struct abc{int a;int b; int c;};
用: struct abc buf;
实参:
fun(buf); fun(&buf)
形参:
void fun (struct abc ai) void fun (struct abc *a2) 优
*********************************************************************************************************************************************************************
返回值
基本语法:返回类型 函数名称 (输入列表) return
指针式空间返回的唯一数据类型
int *fun();
地址 :指向的合法性。【不是局部变量】
局部变量buf定义在fun()中,作为返回值在main()中P指向时,已经消失;而“ ” 在常量区,不会消失,所以P指向
方式:1,static 静态区
2,只读区 (基本用不到)
3,堆区 (malloc申请空间,使用strcyp()将其初始化,返回;在主函数调用完成后必须使用free()释放空间)
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:C语言常用关键字及运算符操作
下一篇:指针杂例1
- C++ 转换函数搭配友元函数 2020-06-10
- C++ rand函数 2020-06-10
- C++ 友元函数 2020-06-10
- 关于各种不同开发语言之间数据加密方法(DES,RSA等)的互通的 2020-06-07
- C++ const成员函数 2020-06-03
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash