我们可以定义指针变量指向任何类型的变量。在上述的处理过程中,指针变量指向的变量通过传递变量的地址来实现。指针变量的取值是内存的地址,这个地址应当是安全的,不可以是随意的,否则,写入内存单元的值将会使得已存放的数据或程序丢失。应使用编译系统提供的标准函数来实现地址分配。

ANSI标准建议设置了两个最常用的动态分配内存的函数malloc()和free(),并包含在slib.h中,但有些C编译却使用malloc.h包含。使用时请参照具体的C编译版本。

我们这里所指的动态内存分配其含义是指:当定义指针变量时,其变量的取值是随机的,可能指向内存的任一单元。若指针的指向是不安全的内存地址,在该地址空间上的数据交换就会产生意料不到的效果。为此,在程序的执行过程中,要保证指针操作的安全性,就要为

指针变量分配安全地址。在程序执行时为指针变量所做的地址分配就称之为动态内存分配。

当无需指针变量操作时,可以将其所分配的内存归还系统,此过程我们称之为内存单元的释放。

malloc()用以向编译系统申请分配内存;free()用以在使用完毕释放掉所占内存。

[例6-21]两个字符串的交换。

#include

#include

#include

main()

{

char *p1,*p2,*temp;

p1=malloc(30);/*动态为指针变量分配长度为30字节的存储空间*/

p2=malloc(20);

temp=malloc(30);

printf("inputs1:");

gets(p1);/*输入字符串*/

printf("inputs2:");

gets(p2);

printf("s1------------s2\n");

printf("%s.......%s\n",p1,p2);

scpy(temp,p1);/*串复制*/

scpy(p1,p2);

scpy(p2,temp);

printf("s1------------s2\n");

printf("%s.......%s\n",p1,p2);

free(p1);

free(p2);

}

为指针变量分配的存储空间长度取决于存放字符的多少。在上述的程序中,两个串的交换可以通过标准函数scpy()来完成,也可以通过串指针交换指向完成,用temp=p1;p1=p2;p2=temp;三条赋值语句实现。但是,利用指针交换指向,其物理意义与串通过函数进行的复制完全不同。前者是存放串地址的指针变量数据交换,后者是串在内存物理空间的数据交换。指针变量用完后,将指针变量所占的存储空间释放。

C语言-基础教程-指针的地址分配.doc

下载Word文档到电脑,方便收藏和打印[全文共1015字]

编辑推荐:

下载Word文档

c语言指针地址交换程序,C语言-基础教程-指针的地址分配相关推荐

  1. 交换变量地址 c语言,C/C++知识点之C语言内存地址交换

    本文主要向大家介绍了C/C++知识点之C语言内存地址交换,通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助.C语言课很无聊,因为之前学过C#所以就感觉特别的无聊. 但是,只能说我看过, ...

  2. Android程序开发0基础教程(一)

    程序猿学英语就上视觉英语网 Android程序开发0基础教程(一) 平台简单介绍 令人激动的Google手机操作系统平台-Android在2007年11月13日正式公布了,这是一个开放源码的操作系统, ...

  3. c语言相邻地址相差多少,C语言内存地址基础

    从计算机内存的角度思考C语言中的一切东东,是挺有帮助的.我们可以把计算机内存想象成一个字节数组,内存中每一个地址表示 1 字节.比方说我们的电脑有 4K 内存,那这个内存数组将会有 4096 个元素. ...

  4. c语言经典解决实际程序,C语言经典教程1讲.ppt

    <C语言经典教程1讲.ppt>由会员分享,可在线阅读,更多相关<C语言经典教程1讲.ppt(48页珍藏版)>请在人人文库网上搜索. 1.C程序设计,主讲人:任祖华,2,本课程学 ...

  5. c语言课程设计加密程序,C语言课程设计文件加密解密.doc

    C语言课程设计文件加密解密 C语言程序设计 课程设计 学 院 计算机工程 班 级 计算1313 姓 名 学 号 201321121089 成 绩 指导老师 2014年6月26日 计算1313班C语言程 ...

  6. python是语言还是软件_程序开发语言之Python:是追逐还是坚守?

    Python作为计算机程序设计语言的其中一种,最初是被设计用于编写自动化脚本(shell),随着版本的不断更新.语言新功能的添加和机器学习的兴起,Python从2017年开始受到广泛关注. Pytho ...

  7. c语言怎么返回前一个程序,c语言return返回到哪

    c语言return返回到哪 c语言return,返回给了上一级,比如一个递归程序,从第三层返回到第二层:又比如一个普通的子程序,那就返回到主程序中去. 主程序中return返回给了操作系统. 比如下面 ...

  8. c语言回调函数构架程序,C语言回调函数熟练---使用方法(构建程序框架方便好用)...

    void KeyCallback ( uint8 keys, uint8 state ); //具体实现函数 void LEDCallback ( uint8 keys, uint8 state ); ...

  9. 用c语言做一个五子棋程序,C语言制作简单五子棋游戏

    原标题:C语言制作简单五子棋游戏 C语言制作简单的五子棋游戏 学习C语言的人很多,但是用C语言很少,而用来为自己所用,来做游戏的人就更少了,很多人都是跟着学校学习,学校讲到哪就坐到哪,但是以后却还是不 ...

最新文章

  1. 未来企业IT选型将更关注社交性(转载)
  2. linux基础(day22)
  3. asp操作excel,显示数据及统计方法
  4. Controller 返回图片请求
  5. 中外计算机百科知识,计算机百科知识.doc
  6. html 标签内背景图片自适应 div 大小
  7. srand rand time函数设置随机值
  8. 求最大和 java_三种算法求最大子段和问题——Java实现
  9. 逗号分割符--字段中含逗号等情况的解析方法Java实现
  10. 高性能服务器编程 Twisted编程基础
  11. java获取access token_微信java 开发4 access_token获取
  12. 2021辽宁省大学生程序设计竞赛题解
  13. python安装pyserial模块_Python使用pip安装pySerial串口通讯模块
  14. 上传身份证照片js_小程序上传身份证图片的实现方法
  15. 遗传算法 - 简单介绍
  16. 身份验证中的allow users=\?\ /中的?和*各是什么意思?
  17. 场效应管调光电路图_一种LED驱动场效应管调光控制电路的制作方法
  18. 【运维】- raid管理工具MegaCli以及storcli使用介绍
  19. Linux统计文件夹下的文件数量
  20. 数字化再目前阶段,有哪些需要重点投入?

热门文章

  1. Kotlin学习笔记 第二章 类与对象 第一节类与继承(补)
  2. 红橙Darren视频笔记 自定义sidebar 自定义View ViewGroup套路
  3. crash分析中有用的管道命令
  4. CNN图像分类Keras代码转换pytorch思路与实现
  5. 计算机图形学E7——裁剪-交互式Liang-Barskey矩形窗口裁剪直线
  6. 吴恩达 深度学习 编程作业(2-3)- TensorFlow Tutorial
  7. matlab期中考试卷,matlab期末考试试卷及答案.doc
  8. spss方差分析_【D】SPSS统计案例分析:多因素方差分析
  9. wifi android手机版下载地址,手机随身wifi下载-手机随身WiFi 安卓版v1.6.3-PC6安卓网...
  10. css js写在一起 vue_如何把vue2.0 和 animate.css合并在一起使用(详细教程)