好文档 - 专业文书写作范文服务资料分享网站

C语言基础教程

天下 分享 时间: 加入收藏 我要投稿 点赞

说明:

1. 数组都是以0作为第一个元素的下标, 因此, 当说明一个int a[16] 的整型 数组时, 表明该数组有16个元素, a[0]~a[15], 一个元素为一个整型变量。 2. 大多数字符串用一维数组表示。数组元素的多少表示字符串长度, 数组名 表示字符串中第一个字符的地址, 例如在语句char str[ 8] 说明的数组中存入 \字符串后, str表示第一个字母\所在的内存单元地址。str[0] 存放的是 字母\的ASCII码值, 以此类推, str[4]存入的是字母\的ASCII码值, str[5]则 应存放字符串终止符'\\0'。

3. Turbo C2.0对数组不作边界检查。例如用下面语句说明两个数组 char str1[5], str2[6];

当赋给str1一个字符串\时, 只有\被赋给, \将会自动的赋 给str2, 这点应特别注意。

三、多维数组

多维数组的一般说明格式是:

类型 数组名[第n维长度][第n-1维长度]......[第1维长度];

这种说明方式与BASIC、FORTRAN等语言中多维数组的说明不一样。 例如:

int m[3][2]; /*定义一个整数型的二维数组*/

char c[2][2][3]; /*定义一个字符型的三维数组*/ 数组m[3][2]共有3*2=6个元素, 顺序为:

m[0][0], m[0][1], m[1][0], m[1][1], m[2][0], m[2][1]; 数组c[2][2][3]共有2*2*3=12个元素, 顺序为: c[0][0][0], c[0][0][1], c[0][0][2], c[0][1][0], c[0][1][1], c[0][1][2], c[1][0][0], c[1][0][1], c[1][0][2], c[1][1][0], c[1][1][1], c[1][1][2],

数组占用的内存空间(即字节数)的计算式为:

字节数=第1维长度*第2维长度*...*第n维长度*该数组数据类型占用的字节数

C语言基础教程(十四)

网上收集整理 变量

二、变量的赋值

变量赋值是给已说明的变量赋给一个特定值。 1. 单个变量的赋值

(1) 整型变量和浮点变量

这两种变量采用下列格式赋值 变量名=表达式; 例如: main() {

int a, m; /*定义局部整型变量a, m*/ float n; /*定义局部浮点变量f*/ a=100, m=20; /*给变量赋值*/ n=a*m*0.1; . . . }

说明:

Turbo C2.0中允许给多个变量赋同一值时可用连等的方式。 例如: main() {

int a, b, c;

a=b=c=0; /*同时给a,b,c赋值*/ . . . }

(2) 字符型变量

字符型变量可以用三种方法赋值。 例如: main() {

char a0, a1, a2; /*定义局部字符型变量a0, a1, a2*/ a0='b'; /*将字母b赋给a0*/

a1=50; /*将数字2(十进制ASCII值为50赋给a1*/ a2='\\x0d'; /*将回车符赋给a2*/ . . . }

(3) 指针型变量 例如: main() { int *i; char *str; *i=100; str=\.

. . }

*i表示i是一个指向整型数的指针, 即*i是一个整型变量, i是一个指向该整型 变量的地址。

*str表示str是一个字符型指针, 即保留某个字符地址。在初始化时, str没有

什么特殊的值, 而在执行str=\时, 编译器先在目标文件的某处保留一个空间 存放\的字符串, 然后把这个字符串的第一个字母\的地址赋给str, 其中 字符串结尾符\是编译程序自动加上的。

对于指针变量的使用要特别注意。上例中两个指针在说明前没有初始化, 因此 这两指针为随机地址, 在小存储模式下使用将会有破坏机器的危险。正确的使用办 法如下: 例如: main() { int *i; char *str;

i=(int*)malloc(sizeof(int)); i=420;

str=(char*)malloc(20); str=\. . . }

上例中, 函数(int*)malloc(sizeof(int))表示分配连续的sizeof(int)=2个字

节的整型数存储空间并返回其首地址。同样(char*)malloc(20)表示分配连续20 个 字节的字符存储空间并返回首地址(有关该函数以后再详述)。由动态内存分配函数 malloc()分配了内存空间后, 这部分内存将专供指针变量使用。 如果要使i指向三个整型数, 则用下述方法。 例如:

#include main() { int *a;

a=(int*)malloc(3*sizeof(int)); *a=1234; *(a+1)=4567; *(a+2)=234; . . . }

*i=1234表示把1234存放到i指向的地址中去, 但对于*(i+1)=4567, 如果认为

将4567存放到i指向的下一个字节中就错了。Turbo C2.0中只要说明i为整型指针, 则 (i+1) 等价于 i+1*sizeof(int) 同样 (i+2) 等价于 i+2*sizeof(int)

C语言基础教程(十五)

网上收集整理 变量

2. 数组变量的赋值

(1) 整型数组和浮点数组的赋值 例如: main() {

int m[2][2]; float n[3];

m[0][0]=0, m[0][1]=17, m[1][0]=21;/*数组元素赋值*/ n[0]=109.5, n[1]=-8.29, n[2]=0.7; . . . }

(2)字符串数组的赋值 例如: main() {

char s[30];

strcpy(s, \ /*给数组赋字符串*/ . . . }

上面程序在编译时, 遇到char s[30]这条语句时, 编译程序会在内存的某处留

出连续30个字节的区域, 并将第一个字节的地址赋给s。当遇到strcpy( strcpy 为 Turbo C2.0的函数)时, 首先在目标文件的某处建立一个\的字符串。 其中\\0表示字符串终止, 终止符是编译时自动加上的, 然后一个字符一个字符地复 制到s所指的内存区域。因此定义字符串数组时, 其元素个数至少应该比字符串的 长度多1。 注意:

1. 字符串数组不能用\直接赋值, 即s=\是不合法的。所以应分 清字符串数组和字符串指针的不同赋值方法。 2. 对于长字符串, Turbo C2.0允许使用下述方法: 例如:

main() {

char s[100];

strcpy(s, \ \ \. . . }

(3)指针数组赋值 例如: main() {

char *f[2]; int *a[2];

f[0]=\ /*给字符型数组指针变量赋值*/ f[1]=\

*a[0]=1, *a[1]=-11; /*给整型数数组指针变量赋值*/ . . . }

C语言基础教程(十六)

网上收集整理 变量

三、数组与指针

数组与指针有密切的联系。数组名本身就是该数组的指针, 反过来, 也可以把

指针看成一个数组, 数组名和指针实质上都是地址, 但是指针是变量, 可以作运算。 而数组名是常量, 不能进行运算。 例如: main() {

char s[30], *p; /*定义字符型数组和指针变量*/

p=s; /*指针p指向数组s的第一个元素s[0]的地址*/ . . .

*(p+8); /*指针p指向数组s的第9个元素s[8]的地址*/ .

C语言基础教程

说明:1.数组都是以0作为第一个元素的下标,因此,当说明一个inta[16]的整型数组时,表明该数组有16个元素,a[0]~a[15],一个元素为一个整型变量。2.大多数字符串用一维数组表示。数组元素的多少表示字符串长度,数组名表示字符串中第一个字符的地址,例如在语句charstr[8]说明的数组中存入\字符串后,
推荐度:
点击下载文档文档为doc格式
8a1ou1x73m28mwx144wv
领取福利

微信扫码领取福利

微信扫码分享