autoit3函数用法

autoit3函数用法
autoit3函数用法

{系统环境变量}

EnvUpdate ( )

;更新环境变量

EnvGet ( "变量名称" )

;取环境变量

ClipGet ( )

;取剪辑板文本

EnvSet ( "变量名称" [, "值"] )

;置环境变量

ClipPut ( "文本" )

;置剪辑板文本

{文件,目录,磁盘管理}

IniRead ("文件名", "功能区", "关键字", "缺省值" )

;Ini文件读关键字的值

IniDelete ( "文件名", "功能区", "关键字" )

;Ini文件删除关键字

IniWrite ( "文件名", "功能区", "关键字", "值" )

;Ini文件写关键字的值

FileInstall ( "源文件", "目标文件" [,参数] )

;安装文件

FileFindFirstFile ( "文件名" )

;查找文件(第一次)

FileFindNextFile ( 文件号)

;查找文件(继续)

FileRecycle ( "源文件" )

;放入回收站

FileChangeDir ( "目录" )

;改变当前目录

FileCreateShortcut ( "文件名", "快捷方式名" [, "工作目录", "args", "desc", "图标", "热键"] ) ;建立快捷方式

DirCreate ( "目录" )

;目录创建

DirCopy ( "源目录", "目标目录" [,参数] )

;目录复制

DirRemove ( "目录" [,参数] )

;目录删除

DirMove ( "源目录", "目标目录" [,参数] )

;目录移动

DriveGetDrive ( "类别" )

;驱动器查找

FileGetLongName ( "完整路径和文件名" )

DriveSpaceTotal ( "路径" )

;取磁盘空间

DriveSpaceFree ( "路径" )

;取磁盘剩余空间

FileGetShortName ( "完整路径和文件名" )

;取短文件名

DriveGetLabel ( "路径" )

;取驱动器卷标

DriveGetType ( "路径" )

;取驱动器类型

DriveGetFileSystem ( "路径" )

;取驱动器文件格式

DriveGetSerial ( "路径" )

;取驱动器序列号

DriveStatus ( "路径" )

;取驱动器状态

FileGetVersion ( "文件名" )

;取文件版本

FileGetSize ( "文件名" )

;取文件大小

FileGetTime ( "文件名" [,选项] )

;取文件日期

FileGetAttrib ( "文件名" )

;取文件属性

FileSaveDialog ( "标题", "初始目录", "文件类型" [,选项] ) ;文件保存对话框

FileOpen ( "文件名",打开方式)

;文件打开

FileOpenDialog ( "标题", "初始目录", "文件类型" [,选项] ) ;文件打开对话框

FileRead ( 文件号或"文件名",字符个数)

;文件读

FileReadLine ( 文件号或"文件名" [,行号] )

;文件读行

FileCopy ( "源文件", "目标文件" [, 参数] )

;文件复制

FileClose ( 文件号)

;文件关闭

FileSelectFolder ( "提示文本", "根目录",参数)

;文件夹选择

FileDelete ( "路径" )

;文件删除

FileExists ( "路径" )

FileWrite ( 文件号或"文件名" , "内容" )

;文件写

FileWriteLine ( 文件号或"文件名" , "内容")

;文件写行

FileMove ( "源文件", "目标文件" [,参数] )

;文件移动

DriveSetLabel ( "路径", "卷标名" )

;置驱动器卷标

FileSetTime ( "文件", "日期", 选项[,参数] )

;置文件日期

FileSetAttrib ( "文件", "+-RASHNOT" [,参数] )

;置文件属性

{键盘控制}

Send ( "按键" [,参数] )

;发送

HotKeySet ( "热键" [, "自定义功能函数"] )

;置热键

{鼠标控制}

MouseGetCursor ( )

;取鼠标指针类型

MouseGetPos ( )

;取鼠标坐标

MouseDown ( "按键" )

;鼠标按下

MouseClickDrag ( "按键", 第一点横坐标, 第一点纵坐标, 第二点横坐标, 第二点纵坐标[,速度] )

;鼠标按住拖动

MouseClick ( "按键" [,横坐标,纵坐标[,次数[,速度]]] )

;鼠标点击

MouseUp ( "按键" )

;鼠标放开

MouseMove ( 横坐标,纵坐标[,速度] )

;鼠标移动

{数学函数}

Exp ( n )

;e的n次平方

BitNOT ( 数值)

;非运算

BitOR ( 值1,值2 )

;或运算

Log ( 数字或数学表达式)

;取对数

ACos (数字或数学表达式)

;取反余弦

ATan ( 数字或数学表达式)

;取反正切

ASin ( 数字或数学表达式)

;取反正弦

Abs (数字或数学表达式)

;取绝对值

Mod ( 值1,值2 )

;取模数

Sqrt ( 数字或数学表达式)

;取平方根

Random ( [[最小值,]最大值] )

;取随机数

Cos (数字或数学表达式)

;取余弦

Tan ( 数字或数学表达式)

;取正切

Sin ( 数字或数学表达式)

;取正弦

Round (数字或数学表达式[,小数点后保留位数] )

;四舍五入

BitXOR ( 值1,值2 )

;位或运算

BitShift ( 值,移动数)

;位移运算

BitAND ( 值1,值2 )

;与运算

{信息框,对话框}

ProgressOn ( "标题", "主文本" [, "子文本" [, 横坐标[, 纵坐标[,选项]]]] ) ;打开进度条窗口

ProgressOff ( )

;关闭进度条窗口

SplashOff ( )

;关闭置顶窗口

ProgressSet ( 进度值[, "子文本" [, "主文本"]] )

;进度设置

InputBox ( "标题", "提示" [, "缺省文本" [, "密码符号" [,宽度,高度[,左边,右边[,等待时间]]]]] ) ;输入框

MsgBox ( 按钮参数, "标题", "信息文本" [,等待时间] )

;信息框

SplashImageOn ( "标题", "图像文件名" [,宽度[,高度[,横坐标[,纵坐标[,选项]]]]] )

;置顶图像窗口

SplashTextOn ( "标题","文本"[,宽度[,高度[,横坐标[,纵坐标[,选项[,"字体名称"[,"字体大小"[,"字体重量"]]]]]]]] )

;置顶文本窗口

ToolTip ( "提示文本" [,横坐标,纵坐标] )

;置提示文本

TrayTip ( "标题", "提示文本", 等待时间[,图标选项] )

;置托盘气泡提示(2000/xp)

{系统函数}

SoundPlay ( "文件名" [,等待方式] )

;播放声音

Call ( "自定义功能函数" )

;调用自定义功能函数

CDTray ( "盘符", "开关命令" )

;光驱开关

AdlibEnable ( "自定义功能函数" [,间隔时间] )

;激活意外窗口处理

TimerStop ( 时间标志)

;计时结束

TimerStart ( )

;计时开始

Exit (0)

;结束

AdlibDisable ( )

;禁止意外窗口处理

BlockInput ( 参数)

;禁止用户输入

Break ( 参数)

;禁止用户退出

MemGetStats ( )

;取内存状态

AutoItWinGetTitle ( )

;取系统窗口标题

PixelGetRGB(横坐标,纵坐标)

;取像素点RGB三色

PixelGetColor ( 横坐标, 纵坐标)

;取像素点颜色

PixelSearch ( 左边, 顶边, 右边, 底边, 颜色值[, shade-variation] [,间隔像素数]] ) ;搜索颜色

URLDownloadToFile ( "连接地址及文件名", "存储到的文件名" )

;下载文件

SetError ( 值)

;置变量@error

AutoItWinSetTitle ( "新标题" )

;置系统窗口标题

SoundSetWaveVolume ( 音量大小)

;置音量

{进程管理}

ProcessWait ( "进程" [,等待时间] )

;等待进程存在

ProcessWaitClose ( "进程" [,等待时间] )

;等待进程关闭

ProcessClose ( "进程" )

;关闭进程

Shutdown ( 关机方式)

;关机

ProcessExists ( "进程" )

;进程是否存在

Sleep ( 时间)

;睡眠/暂停运行

RunAsSet ( ["用户名", "domain", "密码"] )

;以别人身份登录运行

RunWait(@ComSpec & " /c " & 'DOS命令行', "",参数)

;运行DOS命令

RunWait ( "文件名" [, "工作目录" [, 参数]] )

;运行并等待结束

Run ( "文件名" [, "工作目录" [,参数]] )

;运行程序

{注册表管理}

RegRead ( "键路径", "键名" )

;读键值

RegDelete ( "键路径" [, "键名"] )

;删除键

RegWrite ( "键路径", "键名", "类型", 值)

;写键值

{字符串管理}

StringFormat ( "格式", $var1 [, ... $var32] )

;格式化字符串

StringLen ( "字符串" )

;取长度

StringRight ( "字符串",字符数)

;取右边

StringMid ( "字符串",开始位置,字符数)

;取中间

StringLeft ( "字符串",字符数)

;取左边

StringStripCR ( "字符串" )

;删除回车符

StringStripWS ( "字符串",参数)

;删除空格

StringTrimRight ( "字符串",字符数)

;删除右边

StringTrimLeft ( "字符串",字符数)

;删除左边

StringIsASCII ( "字符串" )

;是否为ASCII

StringIsDigit ( "字符串" )

;是否为阿拉伯数字

StringIsUpper ( "字符串" )

;是否为大写

StringIsFloat ( "字符串" )

;是否为浮点小数

StringIsSpace ( "字符串" )

;是否为空

StringIsXDigit ( "字符串" )

;是否为十六进制字符

StringIsAlNum ( "字符串" )

;是否为数字

StringIsLower ( "string" )

;是否为小写

StringIsInt ( "字符串" )

;是否为整数

StringIsAlpha ( "字符串" )

;是否为字母

StringAddCR ( "字符串" )

;添加换行符

StringReplace ( "字符串", "查找的字符串", "替换后的字符串" [,数量[,区分大小写]] ) ;文本替换

StringUpper ( "字符串" )

;转换为大写

StringLower ( "字符串" )

;转换为小写

StringInStr ( "字符串", "字符" [,大小写] ) ;字符包含

StringSplit ( "字符串", "参考符" )

;字符串分离

{变量与转换函数}

IsDeclared ( 变量)

;变量是否被声明

Asc ( "字符" )

;取Asc码

Eval ( 变量或表达式)

;取变量值

UBound ( 数组名[,维数] )

;取数组大小

Int ( 小数或表达式)

;取整

Chr ( ASC码)

;取字符

IsAdmin ( )

;是否为管理员

IsNumber ( 变量)

;是否为数字

IsArray ( 变量)

;是否为数组

IsFloat ( 变量或数值)

;是否为小数

IsInt ( 变量或数值)

;是否为整数

IsString ( 变量)

;是否为字符

Dec ( "十六进制" )

;转换为十进制

Hex ( 十进制数, 长度)

;转换为十六进制

Number ( 表达式)

;转换为数字

String ( 表达式)

;转换为字符

{窗口管理}

WinExists ( "标题" [, "文字"] )

;窗口是否存在

WinActive ( "标题" [, "文字"] )

;窗口是否激活

WinSetOnTop ( "标题", "文字", 参数)

;窗口置顶

WinWait ( "标题" [, "文字" [,等待时间]] )

;等待窗口出现

WinWaitClose ( "标题" [, "文字" [,等待时间]] )

;等待窗口关闭

WinWaitActive ( "标题" [, "文字" [,等待时间]] )

;等待窗口激活

WinWaitNotActive ( "标题" [, "文字" [,等待时间]] )

;等待窗口取消激活状态

WinMenuSelectItem ( "标题","文字","菜单项1" [,"菜单项2" [,"菜单项3"……]] ) ;调用菜单

WinClose ( "标题" [, "文字"] )

;关闭窗口

WinMinimizeAllUndo ( )

;恢复“全部最小化”的窗口

WinActivate ( "标题" [, "文字"] )

;激活窗口

WinKill ( "标题" [, "文字"] )

;强制关闭窗口

WinGetTitle ( "标题" [, "文字"] )

;取窗口标题

WinGetHandle ( "标题" [, "文字"] )

;取窗口句柄

WinGetClientSize ( "标题" [, "文字"] )

;取窗口客户区大小

WinGetClassList ( "标题" [, "文字"] )

;取窗口类列表

WinGetText ( "标题" [, "文字"] )

;取窗口文字

WinGetCaretPos ( )

;取窗口中控件坐标

WinGetState ( "标题" [, "文字"] )

;取窗口状态

WinGetPos ( "标题" [, "文字"] )

;取窗口坐标

WinMinimizeAll ( )

;全部最小化

WinMove ( "标题", "文字",横坐标,纵坐标[,宽度[,高度]] )

;移动窗口

WinSetTitle ( "标题", "文字", "新标题" )

;置窗口标题

WinSetState ( "标题", "文字" ,参数)

;置窗口状态

{控制管理}

ControlCommand ( "窗口标题", "窗口文字", "控件类名称", "命令", "选项" )

;发送控制命令

ControlSend ( "窗口标题", "窗口文字", "控件类名称", "文本" [,参数] )

;发送文本到控件

ControlDisable ( "窗口标题", "窗口文字", "控件类名称" )

;禁止控件

ControlGetFocus ( "窗口标题" [, "窗口文字"] )

;取焦点控件的类名称

ControlGetPos ( "窗口标题", "窗口文字", "控件类名称" )

;取控件位置

ControlGetText ( "窗口标题", "窗口文字", "控件类名称" )

;取控件文字

StatusbarGetText ( "窗口标题" [, "窗口文字" [, 状态栏部分]] )

;取状态栏文本

ControlSetText ( "窗口标题", "窗口文字", "控件类名称","新文本" )

;设置控件文本

ControlClick ( "窗口标题", "窗口文字", "控件类名称" [,鼠标按键] [,点击次数]] )

;鼠标点击控件

ControlShow ("窗口标题", "窗口文字", "控件类名称")

;显示控件

ControlMove ( "窗口标题", "窗口文字", "控件类名称",横坐标,纵坐标[,宽度[,高度]] ) ;移动控件

ControlHide ("窗口标题", "窗口文字", "控件类名称")

;隐藏控件

ControlEnable ( "窗口标题", "窗口文字", "控件类名称" )

;允许控进

ControlFocus ( "窗口标题", "窗口文字", "控件类名称" )

;置焦点

{系统设置}

AutoItSetOption ( "MustDeclareVars",参数)

;变量是否预先声明

AutoItSetOption ( "WinTitleMatchMode",参数)

;标题匹配方式

AutoItSetOption ( "WinWaitDelay",参数)

;窗口等待延迟

AutoItSetOption ( "SendAttachMode",参数)

;发送跟随模式

AutoItSetOption ( "SendKeyDelay",参数)

;发送延迟

AutoItSetOption ( "CaretCoordMode",参数)

;符号坐标匹配方式

AutoItSetOption ( "SendCapslockMode",参数)

;恢复大小写状态

AutoItSetOption ( "WinDetectHiddenText",参数) ;检测隐藏文字

AutoItSetOption ( "WinSearchChildren",参数)

;检测子窗口

AutoItSetOption ( "SendKeyDownDelay",参数)

;键盘按下延迟

AutoItSetOption ( "MouseClickDownDelay",参数) ;鼠标按下延迟

AutoItSetOption ( "MouseClickDelay",参数)

;鼠标单击延迟

AutoItSetOption ( "MouseClickDragDelay",参数) ;鼠标拖动延迟

AutoItSetOption ( "MouseCoordMode",参数)

;鼠标坐标匹配方式

AutoItSetOption ( "ExpandEnvStrings",参数)

;特殊符号扩展

AutoItSetOption ( "TrayIconDebug",参数)

;托盘代码提示

AutoItSetOption ( "WinTextMatchMode",参数)

;文字匹配方式

AutoItSetOption ( "PixelCoordMode",参数)

;像素点坐标匹配方式

AutoItSetOption ( "TrayIconHide",参数)

;隐藏托盘

AutoItSetOption ( "RunErrorsFatal",参数)

;遇错终止

c语言中函数malloc的用法

c语言中函数malloc的用法 c语言中函数malloc的用法的用法如下:一、malloc()和free()的基本概念以及基本用法:1、函数原型及说明:void *malloc(long NumBytes):该函数分配了NumBytes个字节,并返回了指向这块内存的指针。 如果分配失败,则返回一个空指针(NULL)。 关于分配失败的原因,应该有多种,比如说空间不足就是一种。 void free(void *FirstByte):该函数是将之前用malloc分配的空间还给程序或者是操作系统,也就是释放了这块内存,让它重新得到自由。 2、函数的用法:其实这两个函数用起来倒不是很难,也就是malloc()之后觉得用够了就甩了它把它给free()了,举个简单例子:// Code...char *Ptr = NULL;Ptr = (char *)malloc(100 * sizeof(char));if (NULL == Ptr){exit (1);}gets(Ptr);// code...free(Ptr);Ptr = NULL;// code...就是这样!当然,具体情况要具体分析以及具体解决。 比如说,你定义了一个指针,在一个函数里申请了一块内存然后通过函数返回传递给这个指针,那么也许释放这块内存这项工作就应该留给其他函数了。 3、关于函数使用需要注意的一些地方:A、申请了内存空间后,必须检查是否分配成功。 B、当不需要再使用申请的内存时,记得释放;释放后应该把指向这块内存的指针指向NULL,防止程序后面不小心使用了它。

C、这两个函数应该是配对。 如果申请后不释放就是内存泄露;如果无故释放那就是什么也没有做。 释放只能一次,如果释放两次及两次以上会 D、虽然malloc()函数的类型是(void *),任何类型的指针都可以转换成(void *),但是最好还是在前面进行强制类型转换,因为这样可以躲过一些编译器的检查。 二、malloc()到底从哪里得来了内存空间:1、malloc()到底从哪里得到了内存空间?答案是从堆里面获得空间。 也就是说函数返回的指针是指向堆里面的一块内存。 操作系统中有一个记录空闲内存地址的链表。 当操作系统收到程序的申请时,就会遍历该链表,然后就寻找第一个空间大于所申请空间的堆结点,然后就将该结点从空闲结点链表中删除,并将该结点的空间分配给程序。 就是这样!说到这里,不得不另外插入一个小话题,相信大家也知道是什么话题了。 什么是堆?说到堆,又忍不住说到了栈!什么是栈?下面就另外开个小部分专门而又简单地说一下这个题外话:2、什么是堆:堆是大家共有的空间,分全局堆和局部堆。 全局堆就是所有没有分配的空间,局部堆就是用户分配的空间。 堆在操作系统对进程初始化的时候分配,运行过程中也可以向系

10个示例让你的VLOOKUP函数应用从入门到精通

10个示例让你的VLOOKUP函数应用从入门到精通 VLOOKUP函数是众多的Excel用户最喜欢和最常用的函数之一,因此介绍VLOOKUP 函数使用技巧的文章也特别多。在《Excel函数学习4:VLOOKUP函数》中,我们学习了VLOOKUP函数的语法及应用,在Excel公式与函数之美前面的系列文章中,我们又详细探讨了VLOOKUP函数的4个参数。 熟练掌握VLOOKUP函数的使用,是Excel必备技能之一。下面我们通过10个示例,进一步巩固VLOOKUP函数的使用技能。 一键直达>> Excel函数学习4:VLOOKUP函数 一键直达>> Excel公式与函数之美15:VLOOKUP函数的秘密 一键直达>> Excel公式与函数之美19:理解VLOOKUP函数第4个参数的真实含义 一键直达>> Excel公式与函数之美20:MATCH函数使VLOOKUP函数更灵活高效 一键直达>> Excel公式与函数之美21:INDIRECT函数使VLOOKUP函数实现多表查询 一键直达>>Excel公式与函数之美22:VLOOKUP函数查找技巧 概述 VLOOKUP函数最擅长在列中查找相匹配的数据,若找到匹配的数据,则在找到的数据所在行的右边从指定的列中获取数据。 示例1:查找郭靖的数学成绩 如图1所示,在最左边的列中是学生的姓名,在列B至列E中是不同科目的成绩。

图1 现在,我需要从上面的数据中找到郭靖的数学成绩。公式为: =VLOOKUP("郭靖",$A$3:$E$10,2,0) 公式有4个参数: ?“郭靖”——要查找的值。 ?$A$3:$E$10——查找的单元格区域。注意,Excel在最左列搜索要查找的值,本例中在A3:A10中查找姓名郭靖。 ?2——一旦找到了郭靖,将定位到区域的第2列,返回郭靖所在行相同行的值。数值2指定从区域中的第2列查找成绩。 ?0——告诉VLOOKUP函数仅查找完全匹配的值。 以上面的示例来演示VLOOKUP函数是如何工作的。 首先,在区域的最左列查找郭靖,从顶部到底部查找并发现在单元格A7中存储着这个值。

C语言高级编程及实例剖析

C语言高级编程及实例分析 第一章:内存管理 c语言对程序精心编译时,将函数中命令、语句编译成相应序列的机器指令代码,放在代码段;将已初始化的数据,如已赋值的全局变量、静态局部变量等,放在数据段;将未初始化的数据放在BBS段内;将临时数据,如函数调用时传递的参数、局部变量、返回调用时的地址等放在栈段内;而对一些动态变化的数据,如在程序执行中建立的一些数据结构,如链表,动态数组等,则放在堆结构中。 内存管理系统是操作系统的重要部分。C语言中使用malloc()函数和free()函数来分配和释放内存。再次释放已经释放的内存和释放未被分配的内存都会造成系统的崩溃。 1.1.1PC存储器结构 PC机存储器结构分为主存储器、外存储器和高速缓存几个部分。 1.1.4 内存编译模式 编译模式是指如何在内存中放置程序代码及数据,如何分配堆栈,并确认占用的内存大小及如何存取它们,当指定内存模式以后,语言编译程序将按事先选择好的内存模式编译组织程序。C语言提供了6种编译模式,分别是:微模式,小模式,紧凑模式,中模式,大模式和巨模式。 1.1.5 堆概念和结构 堆是一种动态的存储结构(存储链表,动态数组等),实际上就是数据段的自由存储区。 1.1.6 堆管理函数 1.malloc()函数 用来分配内存。函数原型为void *malloc(unsigned size) 如:int *p;

P= (int*)malloc(sizeof(int)); 如果要分配100个int型的空间时,表示为:int *p=(int*)malloc (sizeof(int)); 2.free()函数 用来释放内存。函数原型为void *free(指针变量) 如:int *p=(int *)malloc(4); *p=100; free(p); 3.realloc()函数 用来重调空间的大小,函数声明为:void *realloc(void *block,int size); block是指向要扩张或缩小的内存空间的指针。Size指定新的大小。 4.calloc()函数 用来分配一个能容纳n个元素,每个元素长度为size的内存空间。函数声明为void *calloc (size_t nelem,size_t elsize)。该函数将分配一个容量为nelem *size大小的空间,并用0初始化该内存区域,即每个地址装入0.该函数将返回一个指向分配空间的指针。如果没有空间可用,则返回NULL指针。若在大数据模式下建立远堆,则可用farmalloc函数。 1.2.2 函数剖析 1 函数init_Heap() 实现了初始化内存分配程序的功能 2函数My_Free() 完成函数释放内存的功能 3函数Allocate()

indirect函数的使用方法(间接引用)

indirect函数的使用方法 含义 此函数立即对引用进行计算,并显示其内容。当需要更改公式中单元格的引用,而不更改公式本身,请使用此函数,INDIRECT为间接引用。 语法 INDIRECT(ref_text,[a1]) Ref_text 为对单元格的引用,此单元格可以包含A1-样式的引用、R1C1-样式的引用、定义为引用的名称或对文本字符串单元格的引用。如果ref_text 不是合法的单元格的引用,函数INDIRECT 返回错误值#REF!或#NAME?。 如果ref_text 是对另一个工作簿的引用(外部引用),则工作簿必须被打开。如果源工作簿没有打开,函数INDIRECT 返回错误值#REF!。 a1 为一逻辑值,指明包含在单元格ref_text 中的引用的类型。 如果a1 为TRUE 或省略,ref_text 被解释为A1-样式的引用。 如果a1 为FALSE,ref_text 被解释为R1C1-样式的引用。 案例如下:

(案例一)工作簿内引用第一步 第二步

第三步 第四步

第五步 最终效果 (案例二)工作簿外引用 (1)步骤同案例一,只是引用在不同的sheet表里面 indirect(工作簿内).xlsx indirect(工作簿 外).xlsx indirect.xlsx

(2)老版excel用法 不同excel文件之间的引用案例 实例1 1:启动excel。 2:在Book1的Sheet1的单元格A1中键入“这是测试数据”。 在2003版及较早版的excel中,单击“文件”菜单上的“新建”,单击“工作簿”,然后点击“确定”。 3:在2007版中,单击按钮,单击“新建”,然后单击“创建”。 4:在Book2中,在Sheet1的单元格A1中键入Book1。 5:在Book2的Sheet1的单元格A2中键入Sheet1。 6:在Book2中,在Sheet1的单元格A3中键入A1。 7:保存这两个工作簿。 8:在2003版及较早版本的Excel中,在Book2的Sheet1的单元格B1中键入下面的公式:=INDIRECT(”’[“&A1&”.xls]”&A2&”’!”&A3) 在Excel 2007中,键入下面的公式: =INDIRECT(”’[“&A1&”.xls]”&A2&”’!”&A3) 该公式会返回“这是测试数据”。

c语言中free的用法如何工作.doc

c语言中free的用法如何工作c语言中free的用法:malloc()和free() 1、函数原型及说明: void *malloc(long NumBytes):该函数分配了NumBytes个字节,并返回了指向这块内存的指针。如果分配失败,则返回一个空指针(NULL)。 关于分配失败的原因,应该有多种,比如说空间不足就是一种。 void free(void *FirstByte):该函数是将之前用malloc分配的空间还给程序或者是操作系统,也就是释放了这块内存,让它重新得到自由。 2、函数的用法: 其实这两个函数用起来倒不是很难,也就是malloc()之后觉得用够了就甩了它把它给free()了,举个简单例子: 程序代码: // Code... char *Ptr = NULL; Ptr = (char *)malloc(100 * sizeof(char)); if (NULL == Ptr) { exit (1); } gets(Ptr);

// code... free(Ptr); Ptr = NULL; // code... 就是这样!当然,具体情况要具体分析以及具体解决。比如说,你定义了一个指针,在一个函数里申请了一块内存然后通过函数返回传递给这个指针,那么也许释放这块内存这项工作就应该留给其他函数了。 3、关于函数使用需要注意的一些地方: A、申请了内存空间后,必须检查是否分配成功。 B、当不需要再使用申请的内存时,记得释放;释放后应该把指向这块内存的指针指向NULL,防止程序后面不小心使用了它。 C、这两个函数应该是配对。如果申请后不释放就是内存泄露;如果无故释放那就是什么也没有做。释放只能一次,如果释放两次及两次以上会 出现错误(释放空指针例外,释放空指针其实也等于啥也没做,所以释放空指针释放多少次都没有问题)。 D、虽然malloc()函数的类型是(void *),任何类型的指针都可以转换成(void *),但是最好还是在前面进行强制类型转换,因为这样可以躲过一 些编译器的检查。 好了!最基础的东西大概这么说!现在进入第二部分: c语言中free的用法:malloc()到底从哪里得来了内存空间 1、malloc()到底从哪里得到了内存空间?答案是从堆里面获得空间。也就是说函数返回的指针是指向堆里面的一块内存。

free函数和malloc函数

malloc 原型:extern void *malloc(unsigned int num_bytes); 用法:#include 或#include 功能:分配长度为num_bytes字节的内存块 说明:如果分配成功则返回指向被分配内存的指针,否则返回空指针NULL。 当内存不再使用时,应使用free()函数将内存块释放。 malloc的语法是:指针名=(数据类型*)malloc(长度),(数据类型*)表示指针. 举例: // malloc.c #include #include main() { char *p; clrscr(); // clear screen p=(char *)malloc(100); if(p) printf("Memory Allocated at: %x",p); else printf("Not Enough Memory!\n"); if(p) free(p); getchar(); return 0; } malloc()函数的工作机制 malloc函数的实质体现在,它有一个将可用的内存块连接为一个长长的列表的所谓空闲链表。调用malloc函数时,它沿连接表寻找一个大到足以满足用户请求所需要的内存块。然后,将该内存块一分为二(一块的大小与用户请求的大小相等,另一块的大小就是剩下的字节)。接下来,将分配给用户的那块内存传给用户,并将剩下的那块(如果有的话)返回到连接表上。调用free函数时,它将用户释放的内存块连接到空闲链上。到最后,空闲链会被切成很多的小内存片段,如果这时用户申请一个

globalalloc、malloc和new的区别

GlobalAlloc是为了与Win16兼容才保留的,在Win32下不要使用。全局内存对象使用GlobalAlloc函数分配,在Windows 3.X 的时代,分配的内存可以有两种,全局的和局部的,例如GlobalAlloc和LocalAlloc。但在Win32的时代这些函数已经被废弃了,现在的内存只有一种就是虚存。在Win32中所有的进程所使用的内存区域是相互隔离的,每个进程都拥有自己的地址空间。而且系统使用了页面交换功能,就是利用磁盘空间来模拟RAM,在RAM中数据不使用时将会被交换到磁盘,在需要时将会被重新装入RAM。 两者都是在堆上分配内存区。 malloc()是C运行库中的动态内存分配函数,WINDOWS程序基本不使用了,因为它比WINDOWS内存分配函数少了一些特性,如,整理内存。 GlobalAlloc()是16位WINDOWS程序使用的API,返回一个内存句柄,在实际需要使用时,用GlobalLock()来实际得到内存区。但,32位WINDOWS系统中,应使用新的内存分配函数HeapAlloc()以得到更好的支持,GlobalAlloc()还可以用,主要是为了兼容。 HeapAlloc apply memory from kernel32.dll GlobalAlloc obsolete malloc apply memory form C runtime memory ,and C r untime applys from kernel32.dll new a wrapper of malloc but it is NOT a must for new to implement based on malloc. CoMemAlloc apply memory from kernel32.dll all are heap memory. recommend HeapAlloc for big block memory allocation recommend stack memory space. recommend HeapAlloc for big block memory allocation recommend stack memory space. malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。 对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由于malloc/free是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加于malloc/free。 因此C++语言需要一个能完成动态内存分配和初始化工作的运算符new,以及一个能完成清理与释放内存工作的运算符delete。注意new/delete不是库函数。 我们先看一看malloc/free和new/delete如何实现对象的动态内存管理,见示例7-8。 class Obj{ public : Obj(){ cout << “Initialization” << endl; } ~Obj(){ cout << “Destroy” << endl; } void Initialize(){ cout << “Initialization” << endl; } void Destroy(){ cout << “Destroy” << endl; } }; void UseMallocFree(){ Obj *a = (obj *)malloc(sizeof(obj)); // 申请动态内存

动态存储分配

动态存储分配在此之前,我们用于存储数据的变量和数组都必须在说明部分进行定义。C编译程序通过定义语句了解他们所需存储空间的大小,并预先为其分配适当的空间。这些空间一经分配,在变量或数组的生存期内是固定不变的。故称这种分配方式为“静态存储分配”。C语言中还有一种称作“动态存储分配”的内存空间分配方式:在程序执行期间需要空间来存储数据时,通过“申请”分配指定的内存空间;当有闲置不用的空间时,可以随时将其释放,由系统另作它用。用户可通过调用C语言提供的标准库函数来实现动态分配,从而得到指定数目的内存空间或释放指定的内存空间。ANSI C标准为动态分配系统定义了四个函数,它们是:malloc、calloc、free和realloc。使用这些函数时,必须在程序开头包含文件stdib.h。本节只介绍malloc、calloc和free函数的使用。1、malloc函数和free函数(1)malloc函数ANSI C标准规定malloc函数返回值的类型为void *,函数的调用形式为:malloc (size)。要求size的类型为unsigned int。malloc函数用来分配size个字节的存储区,返回一个指向存储区首地址的基类型为void的地址。若没有足够的内存单元供分配,函数返回空(NULL)。假设int型数据占2字节,float型数据占4字节存储单元,以下程序段将使pi指向一个int类型的存储单元,使pf指向一个float类型的存储单元。int *pi;float *pf;pi=(int *)malloc(2);pf=(float *)malloc(4);由于在ANSI C中malloc函数返回的地址为void *(无值型),故在调用函数时,必须利用强制类型转换将其转换成所需的类型。此处括号中的*号不可少,否则就转换成普通变量类型而不是指针类型了。若有以下语句段:if(pi!=NULL) *pi=6;if(pf!=NULL) *pf=3.8;赋值后数据的存储单元情况如图7.2所示。 pi pf图7.2由动态分配得到的存储单元没有名字,只能靠指针变量来引用它。一旦指针改变指向,原存储单元及所存储数据都将无法再引用。通过调用malloc函数所分配的动态存储单元中没有确定的初值。若不能确定数据类型所占字节数,可以使用sizeof运算符来求得。例如:pi=(int *) malloc(sizeof(int));pf=(float *) malloc(sizeof(float));这是一种常用的形式。它由系统来计算指定类型的字节数。(2)free函数函数的调用形式为:free(p);这里指针变量p必须指向由动态分配函数malloc分配的地址。free函数将指针p所指的存储空间释放,使这部分空间可以由系统重新支配。此函数没有返回值。2、calloc函数ANSI C 标准规定calloc函数返回值的类型为void *,函数的调用形式为:calloc(n,size);要求n和size的类型都为unsigned int。calloc函数用来给n个同一类型的数据项分配连续的存储空间。每个数据项的长度为size个字节。若分配成功,函数返回存储空间的首地址;否则返回空。由调用calloc函数所分配的存储单元,系统自动置初值0。例如:char *ps;ps=(char *)calloc(10,sizeof(char));以上函数调用语句开辟了10个连续的char类型的存储单元,由ps指向存储单元的首地址。每个存储单元可以存放一个字符。显然,使用calloc函数动态开辟的存储单元相当于开辟了一个一维数组。函数的第一个参数决定了一维数组的大小;第二个参数决定了数组元素的类型。函数的返回值就是数组的首地址。使用calloc函数开辟的动态存储单元,同样用free函数释放。

二级c常用函数总结(1)

***************数学相关**************** 1、函数名称: abs 函数原型: int abs(int x); 函数功能: 求整数x的绝对值 函数返回: 计算结果 参数说明: 所属文件: <>,<> 使用范例: #include <> #include <> int main() { int number=-1234; printf("number: %d absolute value: %d",number,abs(number)); return 0; } 2、函数名称: fabs 函数原型: double fabs(double x); 函数功能: 求x的绝对值. 函数返回: 计算结果 参数说明: 所属文件: <> 使用范例: #include <> #include <> int main()

{ float number=; printf("number: %f absolute value: %f",number,fabs(number)); return 0; } 3、函数名称: sqrt 函数原型: double sqrt(double x); 函数功能: 计算x的开平方. 函数返回: 计算结果 参数说明: x>=0 所属文件: <> 使用范例: #include <> #include <> int main() { double x=,result; result=sqrt(x); printf("The square root of %lf is %lf",x,result); return 0; } 4、函数名称: pow 函数原型: double pow(double x,double y); 函数功能: 计算以x为底数的y次幂,即计算x^y的值. 函数返回: 计算结果

malloc与new函数详解

malloc与new函数详解 热3已有1433 次阅读2009-07-20 08:32 malloc函数 原型:extern void *malloc(unsigned int num_bytes); 用法:#include 功能:分配长度为num_bytes字节的内存块 说明:如果分配成功则返回指向被分配内存的指针,否则返回空指针NULL。 当内存不再使用时,应使用free()函数将内存块释放。 举例: // malloc.c #include #include main() { char *p; clrscr(); // clear screen p=(char *)malloc(100); if(p) printf("Memory Allocated at: %x",p); else printf("Not Enough Memory!\n"); free(p); getchar(); return 0; } 函数声明(函数原型): void *malloc(int size); 说明:malloc 向系统申请分配指定size个字节的内存空间。返回类型是void* 类型。void* 表示未确定类型的指针。C,C++规定,void* 类型可以强制转换为任何其它类型的指针。 从函数声明上可以看出。malloc 和new 至少有两个不同: new 返回指定类型的指针,并且可以自动计算所需要大小。比如: int *p; p = new int; //返回类型为int* 类型(整数型指针),分配大小为sizeof(int); 或: int* parr; parr = new int [100]; //返回类型为int* 类型(整数型指针),分配大小为sizeof(int) * 100;

用函数在Excel中从文本字符串提取数字

用函数在Excel中从文本字符串提取数字 Excel输入数据过程中,经常出现在单元格中输入这样的字符串:GH0012JI、ACVB908、华升12-58JK、五香12.56元、0001#、010258等。在进行数据处理时,又需要把其中的数字0012、908、12-58、12.56、0001提取出来。 如何通过使用Excel的工作表函数,提取出字符串中的数字? 一、问题分析 对于已经输入单元格中的字符串,每一个字符在字符串中都有自己固定的位置,这个固定位置都可以用序列数(1、2、3、……)来表示,用这些序列数可以构成一个可用的常数数组。 以字符串“五香12.56元”为例:序列数1、2、3、4、5、6、7、8分别对应着字符串“五香12.56元”中字符“五”、“香”、“1”、“2”、“.”、“5”、“6”、“元”。由序列数组成一个保存在内存中的新数组{1;2;3;4;5;6;7;8}(用列的形式保存),对应字符串中的字符构成的数组{“五”;“香”;“1”;“2”;“.”;“5”;“6”;“元”}。因此解决问题可以从数组着手思考。 二、思路框架 问题的关键是,如何用序列数重点描述出字符串中的数字部分的起始位置和终止位置,从而用MID函数从指定位置开始提取出指定个数的字符(数字)。 不难看出,两个保存在内存中的新数组: {“五”;“香”;“ 1”;“2”;“.”;“5”;“6”;“元”} {1;2;3;4;5;6;7;8} 数组具有相同大小的数据范围,而后一个数组中的每一个数值可以准确地描述出字符串中字符位置。 字符与序列数的对应关系如下表所示: 字符字符位置

五—— 1 香—— 2 1 —— 3 2 —— 4 . —— 5 5 —— 6 6 —— 7 元—— 8 所以解决问题的基本框架是: 用MID函数从字符串的第一个数字位置起提取到最后一个数字止的字符个数。即{=MID(字符串,第一个数字位置,最后一个字符位置-第一个字符位置+1}。其中“+1”是补上最后一个数字位置减去第一个数字位置而减少的一个数字位。 三、解决方案及步骤 假定字符串输入在A2单元格。 ⑴确定A2中字符串的长度。 即用LEN函数计算出A2中字符串中字符的个数,这个字符个数值就是字符串中最后一个字符在字符串中的位置:=LEN(A2)。 ⑵确认字符串中的每一个字符位置序列数组成的新数组。 用INDIRECT函数返回一个由文本字符串指定的引用:

c++入门及c++各种有用函数库

简介 stdlib 头文件即standard library标准库头文件 stdlib 头文件里包含了C、C++语言的最常用的系统函数 该文件包含了的C语言标准库函数的定义 stdlib.h里面定义了五种类型、一些宏和通用工具函数。类型例如size_t、wchar_t、div_t、ldiv_t和lldiv_t;宏例如EXIT_FAILURE、EXIT_SUCCESS、RAND_MAX和MB_CUR_MAX等等;常用的函数如malloc()、calloc()、 realloc()、free()、system()、atoi()、atol()、rand()、srand()、exit() 等等。具体的内容你自己可以打开编译器的include目录里面的stdlib.h头 文件看看。 stdlib.h包含函数 输入样式:C语言模式:#include C++样式:#include 1函数名称: calloc 函数原型: void * calloc(unsigned n,unsigned size); 函数功能: 分配n个数据项的内存连续空间,每个数据项的大小为size 函数返回: 分配内存单元的起始地址,如果不成功,返回0 2函数名称: free 函数原型: void free(void* p); 函数功能: 释放p所指的内存区 函数返回: 参数说明: p-被释放的指针 3函数名称: malloc 函数原型: void * malloc(unsigned size); 函数功能: 分配size字节的存储区 函数返回: 所分配的内存区地址,如果内存不够,返回0 4函数名称: realloc 函数原型: void * realloc(void * p,unsigned size); 函数功能: 将p所指出的已分配内存区的大小改为size,size可以比原来分配 的空间大或小 函数返回: 返回指向该内存区的指针.NULL-分配失败 5函数名称: rand 函数原型: int rand(void); 函数功能: 产生0到32767间的随机整数(0到0x7fff之间)

Excel函数公式使用心得

Excel函数公式使用心得 excel表格的基本操作在论坛学习已有时日,常见新手求助后兴奋地拿着答案回往了,可是题目解决了,却由于不能明白公式的含义,碰到类苏光目自己还难以举一反三应用甚至连一点小改动都需要再次求助;对函数公式略知一二者因不明公式含义不易拓展思路……等等现象,虽大多数都能在原帖得到热心版主、坛友的解答,屡见妙答,但没见到的人又重新发帖问及类苏光目,不利于各种题目的综合汇总,遂发此帖作为公式解释使用!一、怎样学习函数公式这是很多新手最想知道的事,函数那么多,要从哪儿学起呢。我个人谈点小体会:1、“学以致用”,用才是目的——就是你要和将要用到的东西先学。比如你根本用不上财务、工程函数,没必要一下子就往看那些专业性很强的东西(嘿嘿,那些我基本不会),这样就轻易进门了。基本上函数用得最多的逻辑判定和查找和引用这2类函数了。先不要急于学会“数组”,自己常用函数的普通用法有个大致的用法了解之后再往看它的数组用法。2、善于搜索,搜一下,能找到更多的解答;善于求助发帖求助要描述清楚附上必要的图文并茂的附件,轻易得到解答,而且锻炼了自己的表述能力。3、除了“求助”式学习,还要“助人”式的学习,相信这一点是众多论坛高手们都经历过的。只要有时间,

少看一会儿电视少聊一会儿QQ少跟同事吹一会儿牛,到论坛上看看有没有别人不懂而你懂的,别怕出糗,是驴是马牵出来遛遛,相信你热心帮人不会被嘲笑的,况窃冬抛砖引玉,说不定你抛的对别人甚至对高手来说也是块宝玉呢。而,助人助己,有了越来越多的“求助”者给你免费提供了练习的机会,练得多了再综合各种思路的比较,自己就有了一些想法,你的水平肯定与日俱增。4、一口气吃不成胖子,多记一些学习的体会,日积月累,你就是高手了。二、如何解读公式我也谈点小体会吧:1、多看函数帮助。各个函数帮助里面有函数的基本用法和一些“要点”,以及对数据排序、引用类型等等的要求。当然,函数帮助并不囊括所有函数的细微之处,不然,也就不会有那么多求“解释”的帖了。2、庖丁解牛——函数的参数之间用逗号隔开。(别笑话,这是最最基本的基本功,单个函数没啥,组合多个函数的公式就是靠它了),这些逗号就是“牛”的关节,先把长公式大卸八块之后逐个看明白了再拼凑起来读就轻易多了。3、独孤九剑——开个玩笑啦,这里是取谐音“F9键”。F9键用来“抹黑”公式对解读尤其是数组公式有非常强的作用,不过假如公式所含数据区域太大(比如上百行)你可以改变一下区域。具体方法比如下面这个简单数组公式 =sum(if(A1:A3>0,B1:B3)),用鼠标在编辑栏(或F2)把把A1:A3>0部分“抹黑”,按下F9键,就看到

Excel VBA 中 Indirect 函数的使用

了解Indirect 函数 返回由文本字符串指定的引用。此函数立即对引用进行计算,并显示其内容。当需要更改公式中单元格的引用,而不更改公式本身,请使用函数 INDIRECT。 前半句还好理解,后半句有点儿拗口了,其实大可不必在此深究这一句话的意思。个人觉得下面其他内容更重要。 语法 INDIRECT(ref_text,a1) Ref_text为对单元格的引用,此单元格可以包含 A1-样式的引用、R1C1-样式的引用、定义为引用的名称或对文本字符串单元格的引用。如果 ref_text 不是合法的单元格的引用,函数 INDIRECT 返回错误值 #REF!。 ?如果 ref_text 是对另一个工作簿的引用(外部引用),则那个工作簿必须被打开。如果源工作簿没有打开,函数 INDIRECT 返回错误值 #REF!。 ?如果 ref_text 引用的单元格区域超出行限制 1,048,576 或列限制 16,384 (XFD),则 INDIRECT 返回 #REF! 错误。注释此行为不同于 Microsoft Office Excel 2007 之前的 Excel 版本,早期的版本会忽略超出的限制并返 回一个值。 A1为一逻辑值,指明包含在单元格 ref_text 中的引用的类型。 ?如果 a1 为 TRUE 或省略,ref_text 被解释为 A1-样式的引用。 ?如果 a1 为 FALSE,ref_text 被解释为 R1C1-样式的引用。 ?第1参数要求 【示例文件】 通读完毕,其实看来INDIRECT很简单,就两个参数,一个是代表引用的字符串,一个是选择引用样式。 首先,我们选择熟悉的A1引用样式来解读,即默认使用一个参数或者第2参数为TRUE或非0数值: Ref_text为对单元格的引用,此单元格可以包含 A1-样式的引用、R1C1-样式的引用、定义为引用的名称或对文本字符串单元格的引用。如果 ref_text 不是合法的单元格的引用,函数 INDIRECT 返回错误值 #REF!。

南昌大学FreeRTOS实验5-8知识点

实验5-8知识点 实验5:时间片调度/任务信息状态查询与统计 实验6:信号量 实验7:软件定时器/事件标志组 实验8:任务通知 回答下列问题时,尽量通过读代码得到答案,这有助于你理解和记住代码。 1.《11-1 FreeRTOS任务状态或信息查询实验》 本实验同时用到了TIM3和TIM5。TIM5可以换成TIM4。但是,如果我们想把这一实验和以前的实验合并成一个工程时,TIM3/TIM4和实验6-1中断测试实验冲突,这个该如何解决?给出思路即可。 ?? uxTaskGetNumberOfTasks函数的作用和用法? P156获取当前系统中存在的任务的个数 uxTaskGetSystemState函数的作用和用法? P151获取系统中任务状态 uxTaskGetSystemState中的TaskStatus_t结构体的成员变量有哪些? 作业20180521/1: typedef struct xTASK_STATUS { TaskHandle_t xHandle; //任务句柄 const char *pcTaskName; //任务名字 UBaseType_t xTaskNumber; //任务编号 eTaskState eCurrentState; //当前任务状态 UBaseType_tuxCurrentPriority; //任务当前优先级 UBaseType_t uxBasePriority; //任务基础优先级 uint32_t ulRunTimeCounter; //任务运行的总时间 StackType_t *pxStackBase; //堆栈基地址 uint16_tusStackHighWaterMark; //从任务创建以来任务堆栈剩余的最小大小

c中内存分配与释放(malloc,realloc,calloc,free)函数内容的整理

c中内存分配与释放(malloc,realloc,calloc,free)函数内容的整理 malloc: 原型:extern void *malloc(unsigned int num_bytes); 头文件:在TC2.0中可以用malloc.h 或alloc.h (注意:alloc.h 与malloc.h 的内容是完全一致的),而在Visual C++6.0中可以用malloc.h或者stdlib.h。功能:分配长度为num_bytes字节的内存块返回值:如果分配成功则返回指向被分配内存的指针(此存储区中的初始值不确定),否则返回空指针NULL。当内存不再使用时,应使用free()函数将内存块释放。函数返回的指针一定要适当对齐,使其可以用于任何数据对象。说明:关于该函数的原型,在旧的版本中malloc 返回的是char型指针,新的ANSIC标准规定,该函数返回为void型指针,因此必要时要进行类型转换。名称解释:malloc的全称是memory allocation,中文叫动态内存分配。 函数声明 void *malloc(size_t size); 说明:malloc 向系统申请分配指定size个字节的内存空间。返回类型是void* 类型。void* 表示未确定类型的指针。C,C++规定,void* 类型可以强制转换为任何其它类型的指针。备注:void* 表示未确定类型的指针,更明确的说是指申请内存空间时还不知道用户是用这段空间来存储什么类型的数据(比如是char还是int或者...)从函数声明上可以看出。malloc 和new 至少有两个不同: new 返回指定类型的指针,并且可以自动计算所需要大小。比如:int *p; p = new int; //返回类型为int* 类型(整数型指针),分配大小为sizeof(int); 或:int* parr; parr = new int [100]; //返回类型为int* 类型(整数型指针),分配大小为sizeof(int) * 100; 而malloc 则必须要由我们计算字节数,并且在返回后强行转换为实际类型的指针。int* p; p = (int *) malloc (sizeof(int)*128);//分配128个(可根据实际需要替换该数值)整型存储单元,并将这128个连续的整型存储单元的首地址存储到指针变量p中double *pd=(double *) malloc (sizeof(double)*12);//分配12个double型存储单元,并将首地址存储到指针变量pd中第一、malloc 函数返回的是void * 类型。对于C++,如果你写成:p = malloc (sizeof(int)); 则程序无法通过编译,报错:“不能将void* 赋值给int * 类型变量”。所以必须通过(int *) 来将强制转换。而对于C,没有这个要求,但为了使C程序更方便的移植到C++中来,建议养成强制转换的习惯。第二、函数的实参为sizeof(int) ,用于指明一个整型数据需要的大小。如果你写成:int* p = (int *) malloc (1); 代码也能通过编译,但事实上只分配了1个字节大小的内存空间,当你往里头存入一个整数,就会有3个字节无家可归,而直接“住进邻居家”!造成的结果是后面的内存中原有数据内容被改写。malloc 也可以达到new [] 的效果,申请出一段连续的内存,方法无非是指定你所需要内存大小。比如想分配100个int类型的空间:int* p = (int *) malloc ( sizeof(int) * 100 ); //分配可以放得下100个整数的内存空间。另外有一点不能直接看出的区别是,malloc 只管分配内存,并不能对所得的内存进行初始化,所以得到的一片新内存中,其值将是随机的。除了分配及最后释放的方法不一样以外,通过malloc或new得到指针,在其它操作上保持一致。对其做一个特例补充char *ptr; if ((ptr = (char *)malloc(0)) == NULL) puts("Got a null pointer"); else puts("Got a valid pointer"); 此时得到的是Got a

查找与引用函数使用详解

查找与引用函数使用详解 1.ADDRESS 用途:以文字形式返回对工作簿中某一单元格的引用。 语法:ADDRESS(row_num,column_num,abs_num,a1,sheet_text) 参数:Row_num是单元格引用中使用的行号;Column_num是单元格引用中使用的列标;Abs_num指明返回的引用类型(1或省略为绝对引用,2绝对行号、相对列标,3相对行号、绝对列标,4是相对引用);A1是一个逻辑值,它用来指明是以A1或R1C1返回引用样式。如果A1为TRUE或省略,函数ADDRESS返回A1样式的引用;如果A1为FALSE,函数ADDRESS返回R1C1样式的引用。Sheet_text为一文本,指明作为外部引用的工作表的名称,如果省略sheet_text,则不使用任何工作表的名称。 实例:公式“=ADDRESS(1,4,4,1)”返回D1。 2.AREAS 用途:返回引用中包含的区域个数。 语法:AREAS(reference)。 参数:Reference是对某一单元格或单元格区域的引用,也可以引用多个区域。 注意:如果需要将几个引用指定为一个参数,则必须用括号括起来,以免Excel 将逗号作为参数间的分隔符。 实例:公式“=AREAS(a2:b4)”返回1,=AREAS((A1:A3,A4:A6,B4:B7,A16:A18))返回4。 3.CHOOSE 用途:可以根据给定的索引值,从多达29个待选参数中选出相应的值或操作。 语法:CHOOSE(index_num,value1,value2,...)。 参数:Index_num是用来指明待选参数序号的值,它必须是1到29之间的数字、或者是包含数字1到29的公式或单元格引用;value1,value2,...为1到29个数值参数,可以是数字、单元格,已定义的名称、公式、函数或文本。 实例:公式“=CHOOSE(2,"电脑","爱好者")返回“爱好者”。公式“=SUM(A1:CHOOSE(3,A10,A20,A30))”与公式“=SUM(A1:A30)”等价(因为CHOOSE(3,A10,A20,A30)返回A30)。 4.COLUMN

相关文档
最新文档