当前位置:文档之家› free pascal 函数大全

free pascal 函数大全

free pascal 函数大全
free pascal 函数大全

一、数学函数:

inc(i) 使i:=i+1;

inc(i,b) 使i:=i+b;

dec(i) 使i:=i-1;

dec(i,b) 使i:=i-b;

abs(x) 求x的绝对值例:abs(-3)=3

chr(x) 求编号x对应的字符。例:chr(65)='a' chr(97)='a' chr(48)='0' ord(x) 求字符x对应的编号。例:ord(‘a')=65 ord(‘a')=97 另外:ord(false)=0 ord(true)=1

sqr(x) 求x的平方。例:sqr(4)=16

sqrt(x) 求x的正根. 例:sqrt(16)=4 (ps:负数是不能进行运算的,如果需要就要先取绝对值:sqrt(-4)是错的,应该为sqrt(abs(-4)) round(x) 求x的四舍五入例:round(4.5)=5

trunc(x) 求x的整数部分例:trunc(5.6)=5 结果是integer型

int(x) 求x的整数部分例int(5.6)=5.0 结果是real型

frac (x) 求x的小数部分例 frac(5.6)=0.6

pred(x) 求x的前导 pred(‘b')='a' pred(5)=4 pred(true)=false

succ(x) 求x的后继 succ(‘b')='c' succ(5)=6 succ(false)=true

odd(x) 判断x是否为奇数。如果是值为true,反之值为false. odd(2)=false odd(5)=true

power(a,n) 求a的n次方 power(2,3)=8 {只有在开启math库时才可以使用}

random 取0~1之间的随机数(不能取到1)

randomize 随机数的种子函数,在每次设置随机数时都要把这个函数放在最前面.

fillchar(a,size(a),0) 数组初始化,即把数组a的值全部置为0 ;赋成布尔型变量也可以,但注意,赋成1或其他数字,计算机并不会把数组赋成你想要的值,却是其他的数字

shr: x shr n 把x换成二进制后向右移n位,相当于把x 除以 2^n

shl: x shl n 把x换成二进制后向左移n位,相当于把x 乘以 2^n pascal标准函数

2009-10-31 21:14

pascal标准函数

一、变量改变:

1、inc(i) 使用后I:=I+1; Inc(I,b)使用后I:=I+b;

2、Dec(i) ;使用后I:=I-1;dec(I,b)使用后I:=I-b;

3、求x的绝对值 Abs(x) 例:abs(-3)=3

二、数学计算方面:

1、求x的平方 Sqr(x) 例:sqr(4)=16

2、求x的开方 Sqrt(x) 例:sqrt(16)=4

3、求x的四舍五入round(x) 例:round(4.5)=5

4、求x的整数部分trunc(x) 例:trunc(5.6)=5 结果是integer型

5、求x的整数部分int(x)例int(5.6)=5.0 结果是real型

6、求x的小数部分frac (x) 例 frac(5.6)=0.6

7、求a的n次方 power(a,n) 例power(2,3)=8

8、random 取0~1之间的随机数(不能取到1)

9、randomize 随机数的种子函数,在每次设置随机数时都要把这个函数放在最前面 ,randomize(4800)+200 可以取互200至5000之间的整数。

10、Fillchar(a,size(a),0) 数组初始化,即把数组a的值全部置为0

三、字符处理

1、求编号x对应的字符Chr(x) 例:Chr(65)=’A’ chr(97)=’a’ chr(48)=’0’

2、字符x对应的编号Ord(x) 例:ord(‘A’)=65 ord(‘a’)=97 另外:ord(false)=0 ord(true)=1

3、 pred(x) 求x的前趋 pred(‘b’)=’a’ pred(5)=4 pred(true)=false

4、succ(x) 求x的后继 succ(‘b’)=’c’ succ(5)=6 succ(false)=true

5、odd(x) 判断x是否为奇数。如果是值为true,反之值为false. Odd(2)=false odd(5)=true

6、SHR: x SHR n 把x换成二进制后向右移n位,相当于把x 除以 2n

7、SHL: x SHL n把x换成二进制后向左移n位,相当于把x 乘以 2n

四、字符串函数

1、字符串连接运算 concat(s1,s2,s3…sn) 相当于s1+s2+s3+…+sn.

例:concat(‘11’,’aa’)=’11aa’;

2. 求子串。 Copy(s,I,L) 从字符串s中截取第I个字符开始后的长度为l的子串。例:copy(‘abdag’,2,3)=’bda’

3. 删除子串。过程 Delete(s,I,l) 从字符串s中删除第I个字符开始后的长度为l的子串。例:s:=’abcde’;delete(s,2,3);结果s:=’ae’

4. 插入子串。过程Insert(s1,s2,I) 把s1插入到s2的第I个位置

例:s:=abc;insert(‘12’,s,2);结果s:=’a12bc’

5. 求字符串长度 length(s) 例:length(‘12abc’)=5

6. 搜索子串的位置 pos(s1,s2) 如果s1是s2的子串,则返回s1的第一个字符在s2中的位置,若不是子串,则返回0.例:pos(‘ab’,’12abcd’)=3

7. 字符的大写转换。Upcase(ch) 求字符ch的大写体。例:upcase(‘a’)=’A’

8. 数值转换为数串。过程 Str(x,s) 把数值x化为数串s.例:str(12345,s); 结果s=’12345’

9. 数串转换为数值。过程val(s,x,I) 把数串s转化为数值x,如果成功则i=0,不成功则I为无效字符的序数例:val(‘1234’,x,I);结果 x:=1234

pascal函数与运算符

2009-12-07 19:38

一、函数

1. ABS(x) 求x的绝对值

ABS(5)=5,ABS(-5)=5;ABS(0)=0

ABS(-10)= 10 ABS(10)= 10 ABS(98)=98 ABS(-100)=100

2. SQR(X)求X的平方

SQR(5)=25, SQR(9)=81; SQR(8)=64 SQR(100)=10000 SQR(-7)= 49 SQR(0)= 0 3. SQRT(X) 求X的平方根

SQRT(16)=4, SQRT(49)=7 SQRT(81)=9 SQRT(100)=10 SQRT(0)=0

4.PRED(X) 求X的前趋值

PRED(6)=5 PRED(‘D’)=’C’ PRED(9)=8 PRED(‘r’)=’q’ PRED(FALSE)=TRUE 假真

5.SUCC(X)求X的后继值

SUCC(6)=7 SUCC(’E’)=’F’

SUCC(3)= 4 SUCC(‘P’)=’Q’ SUCC(TRUE)=FALSE

6.ORD(X)求X的序号

ORD(‘0’)=48 ORD(‘A’)=65 ORD(‘a’)=97 ORD(‘f’)=102

字符 ASCII值

0 48

1 49

A 65

B 66

a 97

b 98

7.CHR(X)求序号为X的字符

CHR(50)= ‘2’ CHR(68)=’D’ CHR(99)=’c’

8.ODD(X) 奇函数, X为奇数时为TRUE, X为偶数时为FALSE;

ODD(5)=TRUE, ODD(8)=FALSE;

ODD(100)= FALSE ODD(91)= TRUE

二、求出下列表达式的值

运算顺序(*、 /、 div 、 mod), ( +、 -)

乘、除、整除、求余、加、减

3*2=6 6/2=3 0/2=0 9 div 2=4 17 div 5=3

-19 div 5=-3 -19 div (-5)=3负负得正

19 div (-5)=-3 异号得负

8 mod 3=2 17 mod 9=8 9 mod 18=9

-9 mod 4=-1 9 mod (-4)= 1 (-9) mod (-4)=-1

余数的正负号与被除数的正负相同。

2 div 4= 0 4 div 2=2

10 DIV 3=3 10 MOD 3=1

1.17 div 3=5

2. 17 mod 3=2

3. 17/2=8.5

4. 5*6 div 3= 10

5. 10-8 mod 3*4= 2

6. 20+3*4=32

7. 13*6-8 div 3 =78-2=76

运算顺序:同一级别:*、\、DIV、MOD; 同一级别:+、-

Pascal函数大全

2009-11-17 18:53

Pascal函数大全

一、数学函数:

Inc(i) 使i:=i+1;

Inc(I,b) 使I:=I+b;

dec(i) 使i:=i-1;

dec(I,b) 使I:=I-b;

Abs(x) 求x的绝对值例:abs(-3)=3

Chr(x) 求编号x对应的字符。例:Chr(65)=’A’ chr(97)=’a’ chr(48)=’0’

Ord(x) 求字符x对应的编号。例:ord(‘A’)=65 ord(‘a’)=97 另外:ord(false)=0 ord(true)=1

Sqr(x) 求x的平方。例:sqr(4)=16

Sqrt(x)求x的正根. 例:sqrt(16)=4 (PS:负数是不能进行运算的,如果需要就要先取绝对值:sqrt(-4)是错的,应该为sqrt(abs(-4))

round(x) 求x的四舍五入例:round(4.5)=5

trunc(x) 求x的整数部分例:trunc(5.6)=5 结果是integer型

int(x) 求x的整数部分例int(5.6)=5.0 结果是real型

frac (x)求x的小数部分例 frac(5.6)=0.6

pred(x) 求x的前导 pred(‘b’)=’a’ pred(5)=4 pred(true)=false

succ(x) 求x的后继 succ(‘b’)=’c’ succ(5)=6 succ(false)=true

odd(x) 判断x是否为奇数。如果是值为true,反之值为false. Odd(2)=false odd(5)=true

power(a,n) 求a的n次方 power(2,3)=8 {只有在开启math库时才可以使用}

random 取0~1之间的随机数(不能取到1)

randomize 随机数的种子函数,在每次设置随机数时都要把这个函数放在最前面.

Fillchar(a,size(a),0) 数组初始化,即把数组a的值全部置为0 {赋成布尔型变量也可以}

SHR: x SHR n 把x换成二进制后向右移n位,相当于把x 除以 2n

SHL: x SHL n把x换成二进制后向左移n位,相当于把x 乘以 2n

二、字符串函数

1. 连接运算 concat(s1,s2,s3…sn) 相当于s1+s2+s3+…+sn.

例:concat(‘11’,’aa’)=’11aa’;

2. 求子串。 Copy(s,I,L) 从字符串s中截取第I个字符开始后的长度为L 的子串。

例:copy(‘abdag’,2,3)=’bda’

3. 删除子串。过程 Delete(s,I,l) 从字符串s中删除第I个字符开始后的长度为l的子串。

例:s:=’abcde’;delete(s,2,3);结果s:=’ae’

4. 插入子串。过程Insert(s1,s2,I) 把s1插入到s2的第I个位置

例:s:=abc;insert(‘12’,s,2);结果s:=’a12bc’

5. 求字符串长度 length(s) 例:length(‘12abc’)=5

6. 搜索子串的位置 pos(s1,s2) 如果s1是s2的子串,则返回s1的第一个字符在s2中的位置,若不是子串,则返回0.

例:pos(‘ab’,’12abcd’)=3

7. 字符的大写转换。Upcase(ch) 求字符ch的大写体。

例:upcase(‘a’)=’A’

8. 数值转换为数串。过程 Str(x,s) 把数值x化为数串s.

例:str(12345,s); 结果s=’12345’

9. 数串转换为数值。过程val(s,x,I) 把数串s转化为数值x,如果成功

则I=0,不成功则I为无效字符的序数

例:val(‘1234’,x,I);结果 x:=1234

三、标准函数

标准函数。Turbo Pascal语言提供了自变量为整型量的标准函数有顺序函数算术函数和转换函数等。

标准函数是Turbo Pascal语言预先定义的,它们实际上是能完成特定功能的称步子程序的程序段。每个标准函数都用一个标识符来标识,每个标准函数都能完成一个特定的功能,在程序中可以直接调用它们。Turbo Pascal语言中某些标准函数与数学中的函数有相似之处。

一、整数类型函数

整型是顺序类型,即所有的整型数都是按一定的顺序排列的。如3的后序数是4,350的后序数是351。以后介绍的布尔型、字符型、枚举类型和子界类型等都是顺序类型。顺序函数可以对顺序类型数据进行操作,但要注意它们自变量的取值范围。

①前趋函数:Pred(x)函数值为x-l,例如:

Pred (6)=5 Pred (-21)=-22

②后继函数:Succ (x)函数值为x+l,例如:

Succ (l5)=16 Succ (-114)= -113

③绝对值函数:Abs (x)函数值为︱X︱,例如:

Abs (-119)=119 Abs (101)=101

④平方函数:Sqr (x)函数值为X2,例如:

Sqr (-5)=,25 Sqr (l0)= 100

以上四个函数的结果仍是整型数。

⑤奇函数:Odd (x),函数的结果为布尔型。当X为奇数时,函数值为true;当X为偶数时,函数值为false。例如:

Odd (13)= True Odd (16)= False

⑥字符函数:Chr (X),函数值是序号的ASCII字符,属字符型。例如:

Chr (65)=’A’ Chr (32)=’’

二、实数类型函数

在下列算术函数中,X可以是实型或整型数的表达式。对于函数Abs和Sqr,其结果类型和变量X的类型相同,其他算术函数的结果类型都是实型。

绝对值函数Abs(x):函数值为x的绝对值

平方函数Sqr (x):函数值为x的平方

小数函数Frac (x):函数值为x的小数部分

整数函数Int (x):函数值为x的整数部分

正弦函数Sin (x):函数值为x的正弦,其申,的单位为弧度

余弦函数Cos (x):函数值为x的余弦,其中,的单位为弧度

指数函数Exp (x):函数值为了ex

对数函数Ln (X):函数值为x的自然对数

平方正根根函数的Sqrt (x):函数值为x的平方正根

反正切函数Arctan(x):函数值为x的反正切,单位为弧度

随机函数Random:无自变量时,函数值取(0,1)间的随机小数;有自变量且为Word类型时,函数值取(0,自变量)间的随机整数。

三、字符类型函数Turbo Pascal语言提供如下自变量为字符型的标准函数,其中Chr为字符型。

后继函数Succ (ch):例如,Succ (’8’)=’9’ Succ (’E’)=’F’

对字符集的最后一个字符,Succ函数无意义。

前趋函数Pred (ch):例如,Pred (’7’)=’6’ Pred (’B’)=’ A’

序数函数Ord (ch)::给出字符ch在ASCII字符集中的序号,结果为整型。

注意:Ord (’7’)<>7,正确的是:Ord (’7’)=Ord(’0’)+7=48+7=55

若ch是数字字符,则Ord (ch)-Ord ('0')是该数字字符的数值。例如:Ord (’7’)-Ord(’0’)=7

前面介绍的字符函数Chr (i)是Ord (ch)的逆函数。例如:

Chr (55)= ’7’ Chr (Ord(’A’))=’A’

三、布尔类型函数

Turbo Pascal语言提供布尔型函数主要是几个字符型函数。

Ord (B) 例如:Ord (false)=0 Ord (true)=1

1.算术函数

函数标识符自变量类型意义结果类型

abs 整型、实型绝对值同自变量

arctan 整型、实型反正切实型

cos 整型、实型余弦实型

exp 整型、实型指数实型

frac 整型、实型小数部分实型

int 整型、实型整数部分实型

ln 整型、实型自然对数实型

pi 无自变量圆周率实型

sin 整型、实型正弦实型

sqr 整型、实型平方同自变量

sqrt 整型、实型平方根实型

例:abs(-4)=4 abs(-7.49)=7.49 arctan(0)=0.0

sin(pi)=0.0 cos(pi)=-1.0 frac(-3.71)=-0.71

int(-3.71)=-3.0 sqr(4)=16 sqrt(4)=2

2.标准函数

函数标识符自变量类型意义结果类型

odd 整型判断奇数布尔型

pred 离散类型求前趋同自变量

succ 离散类型求后继同自变量

例:odd(1000)=false pred(2000)=1999 succ(2000)=2001

odd(3)=true pred('x')='w succ('x')='y'

3.转换函数

函数标识符自变量类型意义结果类型

chr byte 自变量对应的字符字符型

ord 离散类型自变量对应的序号 longint

round 实型四舍五入 longint

trunc 实型截断取整 longint

例:chr(66)='B' ord('A')=65 round(-4.3)=-5 trunc(2.88)=2

4.杂类函数

函数标识符自变量类型意义结果类型

random 无自变量 [0,1间的随机实数 real

random word [0,自变量间的随机整数) word

randomize 无自变量初始化内部随机数产生器 longint

upcase 字符型使小写英文字母变为大写字符型

downcase 字符型使小写英文字母变为大写字符型

SYSTEM TP的运行库,包括常用的标准函数和过程,可以在程序中直接使用,不需USES语句说明。

DOS 具有日期、时间、目录查找、程序执行等功能

CRT 具有屏幕模式控制、扩展键盘码、颜色、窗口、声音等功能

PRINTER 支持打印输出操作。

GRAPH 高级图形软件包,支持多种图形适配器。

GRAPH3 实现TP3.0的图形软件包。

TURBO3 兼容TP3.0的源程序。

OVERLAY 实现高级覆盖管理

SYSTEM单元常用过程与函数

ABS(X) F 求变量的绝对值

ADDR(X) F 测变量地址

APPEND(F) P 打开一个存在的文本文件,并将文件指针指向文件末尾准备添加元素

ARCTAN(X) F 反正切

ASSIGN(F,C) P 将字符串C所表示的外部文件名赋给文件变量F ASSIGNED(X) P 测试程序当中的指针或变量是否为空

BLOCKREAD(F,D,NUM) P 读类型文件。

BLOCKWRITE(F,D,NUM) P 写无类型文件

BREAK P 中止或结束循环

CHDIR(PATH) P 改变当前目录

CHR(X) F 求ASCII码值为X的字符

CLOSE(F) P 关闭文件

CONCAT(S1,S2...S3) F 字符串合并

CONTINUE P 继续循环

COPY(S,POS,LEN) F 返回一个字符串的子串

COS(X) F 余弦函数

CSEG F 返回CS寄存器的当前值

DEC(X) F X:=X-1

DELETE(S,POS,LEN) P 删除一个字符串的子串

DISPOSE(P) P 释放一个动态变量

DSEG F 返回DS寄存器的当前值

EOF(F) F 判断文件是否结束

EOLN(F) F 判断文件类型中的一行是否结束

ERASE(F) P 删除一个存在的外部文件。

EXIT P 过程中止

EXP(X) F 以E为底的指数函数

FILEPOS(F) F 文件记录的当前位置

FILESIZE(F) F 文件记录数

FILLCHAR(D,LEN,DATE) P 填充数值或字符

FLUSH(F) P 清空文件缓存区

FRAC(X) F 取实形变量的小数部分

FREEMEM(P,I) P 释放变长动态变量

GETDIR(DRV,PATH) P 取当前盘,当前目录

GETMEM(P,I) P 分配变长的动态变量,并把块地址存放在一个指针变量中HALT P 立即中止程序执行,返回TP编辑器或DOS

HI(I) F 返回一个变量的高位字节

INSERT(S,D,POS) F 在一个字符串中某一位置开始插入一个子串

INT F 取整数部分

IORESULT F 返回最后一次输入/出操作的结果状态

LENGTH(S) F 取字符串的长度

LN(R) F 求自然对数

LO(I) F 返回一个变量的低位字节

MAXAVAIL F 返回最大内存空间

MEMAVAIL F 返回可用内存数目

MKDIR(PATH) P 建立一个子目录

MOVE(S,D,LEN) P 快传送

NEW(P) P 建立一个新的动态变量

ODD(X) F 判断一个变量的值是否为奇数

OFS(X) F 侧变量偏移地址

ORD(CH) F 求一个字符的ASCII码值

PARAMCOUNT F DOS参数串长度

PARAMSTR(N) F DOS参数串

PI F 圆周率的值

pos(str1,str2) f 测一个字符串中包含的另一个子串的开始位置

pred(x) f 求前驱

ptr(i) f 指针赋值

random f 返回0~1之间的随机实数

randomize p 初始化随机数发生器

read/readln(f,x) p 读入/输入数据

rename(f,str) p 给一个外部文件改名

reset(f) p 打开文件,并将文件指针指向开始,并准备读数据

rewrite(f) p 打开文件,并将文件指针指向开始,准备写资料

rmdir(path) p 删除一个子目录

round(x) f 求实数的近似数

runerror p 停止程序的运行

scrollto p 滚动显示窗口的某部分内容

seek(f,n) p 将文件指针定位于文件f的第n个文件成分上

seekrof(f) f 定位到文件尾

seekroln(f) f 定位到行尾

seg(n) f 测变量段地址

settextbuf(f) p 将输入/出缓冲区与一个文本文件建立关联

sin(x) f 正弦函数

sizeof(x) f 测变量大小

sptr f 返回sp寄存器的当前值

sqr(x) f 平方

sqrt(x) f 平方根

sseg f 返回ss寄存器的当前值

str(i,s) f 将一个整数转换成字符串

succ(X) f 后继函数

swap(x) f 交换一个变量的高位和低位字节

trunc(x) f 截去实数的小数部分

truncate(f) p 截去文件当前指针以后的内容

upcase(ch) f 将小写字母转换成大写字母

val(s,r,p) p 将一个字符串转换成数值

writeln(f,x) p 输出

dos单元常用过程与函数

getdate p 返回系统当前日期

detftime p 返回最后一次写入的日期和时间

gettime p 返回系统当前时间

packtime p 转换系统日期和时间,封装成4个字节的长整形格式

setdate p 设置系统当前日期

setftime p 写入新的系统日期和时间,覆盖系统最后一次写入的系统日期和时间文件

settime p 设置系统当前时间

uppacktime p 将系统日期和时间转换成纪录格式

diskfree f 返回指定磁盘可用剩余空间

disksize f 返回指定磁盘的总容量

get/setverity p 返回/设置dos状态下的磁盘读写标记

fexpand f 返回函数名的全称

fsearch f 在一个目录中查找文件

fsplit f 将一个文件名分成目录、文件名、扩展名

findfirst p 在当前目录或指定目录下查找第一个与给定属性相匹配的文件名

cursor

属性

鼠标指针移入后的形状

date

函数

返回当前的日期

datetimetofiledate

函数

delphi

的日期格式转换为

dos

的日期格式

datetimetostr

函数

将日期时间格式转换为字符串

datetimetostring

函数

将日期时间格式转换为字符串

datetostr

函数

将日期格式转换为字符串

dayofweek

函数

返回星期的数值

dec

函数

递减变量值

decodedate

函数

将日期格式分解为年月日

decodetime

函数

将时间格式分解为时、分、秒、毫秒

delete

函数

从字符串中删除子串

deletefile

命令

删除文件

diskfree

函数

返回剩余磁盘空间的大小

disksize

函数

返回指定磁盘的容量

dispose

函数

释放动态变量所占的空间

disposestr

函数

释放字符串在堆栈中的内存空间

ditherbackgrounddi2001.jpg? 使背景色的色彩加重或减少50%

dragcursor

属性

当鼠标按下时光标的形状

dragmode

属性

按动的作用方式

dropdowncount

属性

容许的显示数据项的数目

editmask

属性

编辑模式

enabled

属性

是否使标签呈现打开状态

encodedate

函数

将年月日合成为日期格式

encodetime

函数

将时、分、秒、毫秒合成为时间格式

endmargin

属性

末尾边缘

eof

函数

对有类型或无类型文件测试是否到文件尾

eoln

函数

返回文本文件的行结束状态

erase

命令

删除外部文件

exceptaddr

函数

返回引起当前意外的地址

exclude

函数

从集合中删除一些元素

exceptobject

函数

返回当前意外的索引

exit

命令

立即从当前的语句块中退出

exp

函数

指数函数

expandfilename

函数

返回包含绝对路径的字符串

extendedselect

属性

是否允许存在选择模式,true

时,

multiselect

才有意义

extractfiledir

函数

返回驱动器和路径

extractfileext

函数

返回文件的后缀

extractfilename

函数

返回文件名

extractfilepath

函数

返回指定文件的路径

fileage

函数

返回文件已存在的时间

fileclose

命令

关闭指定的文件

filecreate

命令

用指定的文件名建立新文件

filedatetodatetime

函数

dos

的日期格式转换为

delphi

的日期格式

fileexists

函数

检查文件是否存在

filegatattr

函数

返回文件的属性

filegetdate

函数

返回文件的

dos

日期时间标记

fileopen

命令

用指定的存取模式打开指定的文件

filepos

函数

返回文件的当前指针位置

fileread

命令

从指定的文件读取

filesearch

命令

在目录中搜索指定的文件

fileseek

函数

改变文件的指针

filesetattr

函数

设置文件属性

filesetdate

函数

设置文件的

dos

日期时间标记

filesize

函数

返回当前文件的大小

filewrite

函数

对指定的文件做写操作

fillchar

函数

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、什么是堆:堆是大家共有的空间,分全局堆和局部堆。 全局堆就是所有没有分配的空间,局部堆就是用户分配的空间。 堆在操作系统对进程初始化的时候分配,运行过程中也可以向系

Freepascal资料详解

Freepascall资料详解 一、TP和FP的功能区别 1.Free Pascal理论上可以使用4GB(2^32byte)的内存,因此实际上几乎可以使用系统中的所有剩余内存(除非赛题中有内存限制),这是因为Free Pascal使用的是32位的编译器。但是对于Turbo Pascal来说,由于是16位的编译器,因此不能定义大小超过64KB (2^16byte)的数据类型和变量,并且在DOS实模式下可以使用的内存总数只有640KB。但这并不是说,你可以随意定义很大的数组了,因为光读入200MB的数据就会让你的程序超时了(因为现在的7200转硬盘和133的系统总线速度决定了读取数据的速度也就100MB/秒)。 2.在Free Pascal中,如果用assign给标准输入输出文件变量input和output指定了文件,在程序结束之前一定要用close关闭input和output,否则输出文件可能不能被正确的写入。这个问题是近几年NOIP竞赛和省队训练、选拔中选手常犯的错误。尤其是程序非正常结束之前(如halt)会忘记。 3.如果用Rewrite打开文件,那么文件就只能被写入了。如果需要读取这个文件,要对文件执行Reset。所以,在Free Pascal中最好不要对一个文件同时进行读写操作。 4.在Free Pascal中,集合中的元素都是4个字节长的。 5.表达式执行的顺序是不确定的。比如对于表达式a:=g(2)+f(3); 不保证g(2)一定在f(3)之前执行。 6.函数和过程在使用时,参数的类型必须和定义时完全一致。原因是在Free Pascal中添加了函数重载功能。 7.PROTECTED,PUBLIC,PUBLISHED,TRY,FINALLY,EXCEPT,RAISE成为了关键字,因此不能作为函数和过程的名字;而FAR,NEAR不再是关键字了,原因是Free Pascal是32位系统,不再需要这些关键字。 二、FP的新增功能 1.函数可以返回复杂的类型,比如记录和数组。 如: type arrtype=array[1..100] of longint;{必须要先定义数组基类型} var i,j,k,n:longint; a:arrtype; function sort(a:arrtype;n:longint):arrtype; var i,j,k:longint; begin for i:=1 to n-1 do for j:=i+1 to n do if a>a[j] then begin k:=a; a:=a[j]; a[j]:=k;

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()

pascal-字符与字符串处理

第十课字符与字符串处理 一、字符、字符串类型的使用 (一)字符类型 字符类型为由一个字符组成的字符常量或字符变量。 字符常量定义: const 字符常量='字符' 字符变量定义:Ⅱ Var 字符变量:char; 字符类型是一个有序类型, 字符的大小顺序按其ASCⅡ代码的大小而定。函数succ、pred、ord适用于字符类型。 例如:后继函数:succ('a')='b' 前继函数:pred('B')='A' 序号函数:ord('A')=65 ord(‘a’)=97 ord(‘0’)=48 例1按字母表顺序和逆序每隔一个字母打印。即打印出: a c e g I k m o q s u w y z x r v t p n l j h f d b 程序如下: program ex8_1; var letter:char; begin for letter:='a' to 'z' do if (ord(letter)-ord('a'))mod 2=0 then write(letter:3); writeln; for letter:='z' downto 'a' do if (ord(letter)-ord('z'))mod 2 =0 then write(letter:3); writeln; end. 分析:程序中,我们利用了字符类型是顺序类型这一特性,直接将字符类型变量作为循环变量,使程序处理起来比较直观。 (二)字符串类型 字符串是由字符组成的有穷序列。 字符串类型定义: type <字符串类型标识符>=string[n]; var 字符串变量: 字符串类型标识符; 其中:n是定义的字符串长度,必须是0~255之间的自然整数,第0号单元中存放串的实际长度,程序运行时由系统自动提供,第1~n号单元中存放串的字符。若将string[n]写成string,则默认n值为255。 例如:type man=string[8]; line=string; var name:man; screenline:line; 另一种字符类型的定义方式为把类型说明的变量定义合并在一起。 例如:VAR name:STRING[8]; screenline:STRING; Turbo Pascal中,一个字符串中的字符可以通过其对应的下标灵活使用。 例如:var name:string; begin readln(nsme); for i:=1 to ord(name[0])do writeln(name[i]);

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()到底从哪里得到了内存空间?答案是从堆里面获得空间。也就是说函数返回的指针是指向堆里面的一块内存。

pascal常用函数

Pascal常用函数 PASCAL内自带的函数,通常可以直接调用,特殊的需要调用数据库,如:used math 一、标准函数 二、数学函数与过程 三、字符类型函数 四、字符串函数与过程 五、布尔类型函数 六、math单元的函数与过程 一、标准函数 标准函数。Turbo Pascal语言提供了自变量为整型量的标准函数有顺序函数算术函数和转换函数等。 标准函数是Turbo Pascal语言预先定义的,它们实际上是能完成特定功能的称步子程序的程序段。每个标准函数都用一个标识符来标识,每个标准函数都能完成一个特定的功能,在程序中可以直接调用它们。Turbo Pascal语言中某些标准函数与数学中的函数有相似之处。 1、整数类型函数 整型是顺序类型,即所有的整型数都是按一定的顺序排列的。如3的后序数是4,350的后序数是351。以后介绍的布尔型、字符型、枚举类型和子界类型等都是顺序类型。顺序函数可以对顺序类型数据进行操作,但要注意它们自变量的取值范围。 ①前趋函数:Pred(x)函数值为x-l,例如: Pred (6)=5 Pred (-21)=-22 ②后继函数:Succ (x)函数值为x+l,例如: Succ (l5)=16 Succ (-114)= -113 ③绝对值函数:Abs (x)函数值为|X|,例如: Abs (-119)=119 Abs (101)=101 ④平方函数:Sqr (x)函数值为X*X,例如: Sqr (-5)=25 Sqr (l0)= 100 以上四个函数的结果仍是整型数。 ⑤奇函数:Odd (x),函数的结果为布尔型。当X为奇数时,函数值为true;当X为偶数时,函数值为false,例如: Odd (13)= True Odd (16)= False ⑥字符函数:Chr (X),函数值是序号的ASCII字符,属字符型,例如: Chr (65)=?A? Chr (66)=?B? 2、实数类型函数 在下列算术函数中,X可以是实型或整型数的表达式。对于函数Abs和Sqr,其结果类型和变量X的类型相同,其他算术函数的结果类型都是实型。 绝对值函数Abs(x):函数值为x的绝对值。 平方函数Sqr (x):函数值为x的平方。 小数函数Frac (x):函数值为x的小数部分。 整数函数Int (x):函数值为x的整数部分。 正弦函数Sin (x):函数值为x的正弦,其中,的单位为弧度。

Pascal常用字符串函数

一、数学函数: Inc(i) 使I:=I+1; Inc(I,b) 使I:=I+b; Abs(x) 求x的绝对值例:abs(-3)=3 Chr(x) 求编号x对应的字符。例:Chr(65)=’A’ chr(97)=’a’ chr(48)=’0’ Ord(x) 求字符x对应的编号。例:ord(‘A’)=65 ord(‘a’)=97 另外:ord(false)=0 o rd(true)=1 Sqr(x) 求x的平方。例:sqr(4)=16 Sqrt(x)求x的开方. 例:sqrt(16)=4 round(x) 求x的四舍五入例:round(4.5)=5 trunc(x) 求x的整数部分例:trunc(5.6)=5 结果是integer型 int(x) 求x的整数部分例int(5.6)=5.0 结果是real型 frac (x)求x的小数部分例frac(5.6)=0.6 pred(x) 求x的前导pred(‘b’)=’a’ pred(5)=4 pred(true)=false succ(x) 求x的后继succ(‘b’)=’c’ succ(5)=6 succ(false)=true odd(x) 判断x是否为奇数。如果是值为true,反之值为false. Odd(2)=false od d(5)=true power(a,n) 求a的n次方power(2,3)=8 exp(b*ln(a)) a的b次方 random 取0~1之间的随机数(不能取到1) randomize 随机数的种子函数,在每次设置随机数时都要把这个函数放在最前面. Fillchar(a,size(a),0) 数组初始化,即把数组a的值全部置为0 SHR: x SHR n 把x换成二进制后向右移n位,相当于把x 除以2n a shr n 等价于a div (2^n) SHL: x SHL n把x换成二进制后向左移n位,相当于把x 乘以2n 二、字符串函数 1. 连接运算concat(s1,s2,s3…sn) 相当于s1+s2+s3+…+sn. 例:concat(‘11’,’aa’)=’11aa’; 2. 求子串。Copy(s,i,L) 从字符串s中截取第i个字符开始后的长度为L的子串。 例:copy(‘abdag’,2,3)=’bda’ 3. 删除子串。过程Delete(s,i,L) 从字符串s中删除第i个字符开始后的长度为L的子串。

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函数时,它将用户释放的内存块连接到空闲链上。到最后,空闲链会被切成很多的小内存片段,如果这时用户申请一个

PASCAL函数表

PASCAL函数表 1、数学函数 求绝对值函数abs(x) 定义:function Abs(X): (Same type as parameter); 说明:X可以是整型,也可以是实型;返回值和X的类型一致例子: var r: Real; i: Integer; begin r := Abs(-2.3); { 2.3 } i := Abs(-157); { 157 } end. 2、取整函数int(x) 定义:function Int(X: Real): Real; 注意:X是实型数,返回值也是实型的;返回的是X 的整数部分,也就是说,X被截尾了(而不是四舍五入)例子: var R: Real; begin R := Int(123.567); { 123.0 } R := Int(-123.456); { -123.0 } end. 3、截尾函数trunc(x) 定义:function Trunc(X: Real): Longint; 注意:X是实型表达式. Trunc 返回Longint 型的X的整数部分例子: begin Writeln(1.4, ' becomes ', Trunc(1.4)); { 1 } Writeln(1.5, ' becomes ', Trunc(1.5)); { 1 } Writeln(-1.4, 'becomes ', Trunc(-1.4)); { -1 } Writeln(-1.5, 'becomes ', Trunc(-1.5)); { -1 } end. 4、四舍五入函数round(x) 定义:function Round(X: Real): Longint; 注意:X是实型表达式. Round 返回Longint 型的X的四舍五入值.如果返回值超出了Longint的表示范围,则出错. 例子: begin Writeln(1.4, ' rounds to ', Round(1.4)); { 1 } Writeln(1.5, ' rounds to ', Round(1.5)); { 2 } Writeln(-1.4, 'rounds to ', Round(-1.4));{ -1 } Writeln(-1.5, 'rounds to ', Round(-1.5));{ -2 } end. 5、取小数函数frac(x) 定义:function Frac(X: Real): Real; 注意:X 是实型表达式. 结果返回 X 的小数部分; 也就是说,Frac(X) = X - Int(_X). 例子:

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函数释放。

pascal语言中字符串操作

字符串类型 在Borland公司的Turbo Pascal和16位Delphi中,传统的字符串类型是一个字符序列,序列的头部是一个长度字节,指示当前字符串的长度。由于只用一个字节来表示字符串的长度,所以字符串不能超过255个字符。这一长度限制为字符串操作带来不便,因为每个字符串必须定长(确省最大值为255),当然你也可以声明更短的字符串以节约存储空间。 字符串类型与数组类型相似。实际上一个字符串差不多就是一个字符类型的数组,因为用[]符号,你就能访问字符串中的字符,这一事实充分说明了上述观点。 为克服传统Pascal 字符串的局限性,32位Delphi增加了对长字符串的支持。这样共有三种字符串类型: ?ShortString 短字符串类型也就是前面所述的传统 Pascal 字符串类型。 这类字符串最多只能有255个字符,与16位Delphi中的字符串相同。短字符串中的每个字符都属于ANSIChar 类型(标准字符类型)。 ?ANSIString长字符串类型就是新增的可变长字符串类型。这类字符串的内存动态分配,引用计数,并使用了更新前拷贝(copy-on-write)技术。 这类字符串长度没有限制(可以存储多达20亿个字符!),其字符类型 也是ANSIChar 类型。 ?WideString 长字符串类型与ANSIString 类型相似,只是它基于WideChar 字符类型,WideChar 字符为双字节Unicode 字符。 使用长字符串 如果只简单地用String定义字符串,那么该字符串可能是短字符串也可能是ANSI长字符串,这取决于$H 编译指令的值,$H+(确省)代表长字符串(ANSIString 类型)。长字符串是Delphi 库中控件使用的字符串。 Delphi 长字符串基于引用计数机制,通过引用计数追踪内存中引用同一字符串的字符串变量,当字符串不再使用时,也就是说引用计数为零时,释放内存。 如果你要增加字符串的长度,而该字符串邻近又没有空闲的内存,即在同一存储单元字符串已没有扩展的余地,这时字符串必须被完整地拷贝到另一个存储单元。当这种情况发生时,Delphi运行时间支持程序会以完全透明的方式为字符串重新分配内存。为了有效地分配所需的存储空间,你可以用SetLength 过程设定字符串的最大长度值: SetLength (String1, 200);

二级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;

pascal 过程与函数教程

第十二课过程与函数 前面我们曾经学习了程序设计中的三种基本控制结构(顺序、分支、循环)。用它们可以组成任何程序。但在应用中,还经常用到子程序结构。 通常,在程序设计中,我们会发现一些程序段在程序的不同地方反复出现,此时可以将这些程序段作为相对独立的整体,用一个标识符给它起一个名字,凡是程序中出现该程序段的地方,只要简单地写上其标识符即可。这样的程序段,我们称之为子程序。 子程序的使用不仅缩短了程序,节省了内存空间及减少了程序的编译时间,而且有利于结构化程序设计。因为一个复杂的问题总可将其分解成若干个子问题来解决,如果子问题依然很复杂,还可以将它继续分解,直到每个子问题都是一个具有独立任务的模块。这样编制的程序结构清晰,逻辑关系明确,无论是编写、阅读、调试还是修改,都会带来极大的好处。在一个程序中可以只有主程序而没有子程序(本章以前都是如此),但不能没有主程序,也就是说不能单独执行子程序。pascal中子程序有两种形式:函数和过程。 一、函数 在此之前,我们曾经介绍并使用了pascal提供的各种标准函数,如ABS,SUCC等等,这些函数为我们编写程序提供了很大的方便。但这些函数只是常用的基本函数,编程时经常需要自定义一些函数。 (一)函数的说明 在pascal中,函数也遵循先说明后使用的规则,在程序中,函数的说明放在调用该函数的程序(主程序或其它子程序)的说明部分。函数的结构主程序的结构很相似。 函数定义的一般格式: function <函数名> (<形式参数表>):<类型>; {函数首部} 说明: ①函数由首部与函数体两部分组成。 ②函数首部以关键字function开头。 ③函数名是用户自定义的标识符。 ④函数的类型也就是函数值的类型,所求得的函数值通过函数名传回调用它的程序。可见,函数的作用一般是为了求得一个值。 ⑤形式参数简称形参,形参即函数的自变量。自变量的初值来源于函数调用。在函数中,形参一般格式如下: 变量名表1:类型标识符1;变量名表2:类型标识符2;…;变量名表n:类型标识符n 可见形参表相当于变量说明,对函数自变量进行说明,但应特别注意:此处只能使用类型标识符,而不能直接使用类型。 ⑥当缺省形参表(当然要同时省去一对括号)时,称为无参函数。 ⑦函数体与程序体基本相似,由说明部分和执行部分组成。 ⑧函数体中的说明部分用来对本函数使用的标号、常量、类型、变量、子程序加以说明,这些量只在本函数内有效。 ⑨函数体的执行部分由begin开头,end结束,中间有若干用分号隔开的语句,只是end后应跟分号,不能像程序那样用句号"."。 ⑩在函数体的执行部分,至少应该给函数名赋一次值,以使在函数执行结束后把函数值带回调用程序。 (二)函数的调用

delphi常用函数大全

delphi常用函数大全(转) Abort函数引起放弃的意外处理 Abs函数绝对值函数 AddExitProc函数将一过程添加到运行时库的结束过程表中 Addr函数返回指定对象的地址 AdjustLineBreaks函数将给定字符串的行分隔符调整为CR/LF序列Align属性使控件位于窗口某部分 Alignment属性控件标签的文字位置 AllocMem函数在堆栈上分配给定大小的块 AllowGrayed属性允许一个灰度选择 AnsiCompareStr函数比较字符串(区分大小写) AnsiCompareText函数比较字符串(不区分大小写) AnsiLowerCase函数将字符转换为小写 AnsiUpperCase函数将字符转换为大写 Append函数以附加的方式打开已有的文件 ArcTan函数余切函数 AssignFile函数给文件变量赋一外部文件名 Assigned函数测试函数或过程变量是否为空 AutoSize属性自动控制标签的大小 BackgroundColor属性背景色 BeginThread函数以适当的方式建立用于内存管理的线程 BevelInner属性控件方框的内框方式 BevelOuter属性控件方框的外框方式 BevelWidth属性控件方框的外框宽度 BlockRead函数读一个或多个记录到变量中 BlockWrite函数从变量中写一个或多个记录 BorderStyle属性边界类型 BorderWidth属性边界宽度 Break命令终止for、while、repeat循环语句 Brush属性画刷 Caption属性标签文字的内容 ChangeFileExt函数改变文件的后缀 ChDir函数改变当前目录 Checked属性确定复选框选中状态 Chr函数返回指定序数的字符 CloseFile命令关闭打开的文件 Color属性标签的颜色 Columns属性显示的列数 CompareStr函数比较字符串(区分大小写) Concat函数合并字符串 Continue命令继续for、while、repeat的下一个循环 Copy函数返回一字符串的子串 Cos函数余弦函数 Ctl3D属性是否具有3D效果 Cursor属性鼠标指针移入后的形状 Date函数返回当前的日期 DateTimeToFileDate函数将DELPHI的日期格式转换为DOS的日期格式DateTimeToStr函数将日期时间格式转换为字符串DateTimeToString函数将日期时间格式转换为字符串 DateToStr函数将日期格式转换为字符串

PASCAL语言函数集

Pascal语言函数集(含Delphi控件属性) abort函数 引起放弃的意外处理 abs函数绝对值函数 addexitproc函数将一过程添加到运行时库的结束过程表中 addr函数返回指定对象的地址 adjustlinebreaks函数将给定字符串的行分隔符调整为cr/lf序列align属性使控件位于窗口某部分 alignment属性控件标签的文字位置 allocmem函数在堆栈上分配给定大小的块 allowgrayed属性允许一个灰度选择 ansicomparestr函数比较字符串(区分大小写) ansicomparetext函数比较字符串(不区分大小写) ansilowercase函数将字符转换为小写 ansiuppercase函数将字符转换为大写 append函数以附加的方式打开已有的文件 arctan函数余切函数 assignfile函数给文件变量赋一外部文件名 assigned函数测试函数或过程变量是否为空 autosize属性自动控制标签的大小 backgrounddi2001.jpg属性背景色 beginthread函数以适当的方式建立用于内存管理的线程 bevelinner属性控件方框的内框方式 bevelouter属性控件方框的外框方式 bevelwidth属性控件方框的外框宽度 blockread函数读一个或多个记录到变量中 blockwrite函数从变量中写一个或多个记录 borderstyle属性边界类型 borderwidth属性边界宽度 break命令终止for、while、repeat循环语句 brush属性画刷 caption属性标签文字的内容 changefileext函数改变文件的后缀 chdir函数改变当前目录 checked属性确定复选框选中状态 chr函数返回指定序数的字符 closefile命令关闭打开的文件

相关主题
文本预览
相关文档 最新文档