• 网络学院
  • IT资讯
  • 操作系统
  • 网络技术
  • 软件应用
  • 办公软件
  • 编程技术
  • 网站架设
  • 数据库类
  • 平面设计
  • 多媒体类
  • 游戏资讯
  • 教学论文
  • 认证考试
C教程-----数据类型、变量和运算符(4)
  站点:
  • 首 页
  • 最新软件
  • 文章教程
  • 国内软件
  • 国外软件
  • 绿色软件
  • 源码下载
  • 字体下载
C教程-----数据类型、变量和运算符(4)
软件发布 C教程-----数据类型、变量和运算符(4)
网络软件 系统工具 应用软件 联络聊天 图形图像 多媒体类 行业软件 游戏娱乐 编程开发 安全相关 教育教学 数码软件 绿软下载
热门软件: QQ 瑞星 pplive e话通 木马克星 千千静听 office2000 五笔字根 Photoshop 视频分割
返回文章教程首页 >> 认证考试 >> 计算机等级考试 >> 计算机等级考试动态 >> C教程-----数据类型、变量和运算符(4)

C教程-----数据类型、变量和运算符(4)

添加时间: 2007-4-28 21:12:47  作者: 计算机等级考试认证参考  阅读次数:122   来源: http://www.d9soft.com

       

三、多维数组
多维数组的一般说明格式是: 类型 数组名[第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维长度*该数组数据类型占用的字节数
4.5 变量的初始化和赋值
一、变量的初始化
变量的初始化是指变量在被说明的同时赋给一个初值。Turbo C2.0中外部变量 和静态全程变量在程序开始处被初始化, 局部变量包括静态局部变量是在进入定义它们的函数或复合语句时才作初始化。所有全程变量在没有明确的初始化时将被自动清零, 而局部变量和寄存器变量在未赋值前其值是不确定的。对于外部变量和静态变量, 初值必须是常数表达式, 而自动变量和寄存器变量可以是任意的表达式, 这个表达式可以包括常数和前面说明过的变量和函数。
1. 单个变量的初始化例如:
float f0, f1=0.2;/*定义全程变量, 在初始化时f0被清零, f1被赋0.2*/
main()
{
static int i=10, j; /*定义静态局部变量, 初始化时i被赋10, j不确
定*/
int k=i*5; /*定义局部变量, 初始化时k被赋10*5=50*/
char c=’y’; /*定义字符型指什变量并初始化*/
.
.
.
}

2. 数组变量的初始化.例如:
main()
{
int p[2][3]={{2, -9, 0}, {8, 2, -5}}; /*定义数组p并初始化/*
int m[2][4]={{27, -5, 19, 3}, {1, 8, -14, -2}};/*定义数组m并初
始化*/
char *f[]={’A’, ’B’, ’C’}; /*定义数组f并初始化*/
.
.
.
}
从上例可以看出: Turbo C2.0中数组进行初始化有下述规则:
(1) 数组的每一行初始化赋值用"{}"并用","分开, 总的再加一对"{}"括起来,最后以";"表示结束。
(2) 多维数组的存储是按最右维数的变量变化最快的原则。
(3) 多维数组存储是连续的, 因此可以用一维数组初始化的办法来初始化多维数组。例如:int x[2][3]={1, 2, 3, 4, 5, 6};/*用一维数组来初始化二维数组*/
(4) 对数组初始化时, 如果初值表中的数据个数比数组元素少, 则不足的数组元素用0来填补。
(5) 对指针型变量数组可以不规定维数, 在初始化赋值时, 数组维数从0 开始被连续赋值.例如:char *f[]={’a’, ’b’, ’c’};
初始化时将会给3个字符指针赋值, 即: *f[0]=’a’, *f[1]=’b’, *f[2]=’c’。
3. 指针型变量的初始化.例如:
main()
{
int *i=7899; /*定义整型数指针变量并初始化*/
float *f=3.1415926; /*定义浮点数指针变量并初始化*/
char *s="Good"; /*定义字符型指针变量并初始化*/
.
.
.
}

二、变量的赋值
变量赋值是给已说明的变量赋给一个特定值。
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="Good";
.
.
.
}
*i表示i是一个指向整型数的指针, 即*i是一个整型变量, i是一个指向该整型变量的地址。
*str表示str是一个字符型指针, 即保留某个字符地址。在初始化时, str没有什么特殊的值, 而在执行str="Good"时, 编译器先在目标文件的某处保留一个空间存放"Good"的字符串, 然后把这个字符串的第一个字母"G"的地址赋给str, 其中字符串结尾符""是编译程序自动加上的。对于指针变量的使用要特别注意。上例中两个指针在说明前没有初始化, 因此这两指针为随机地址, 在小存储模式下使用将会有破坏机器的危险。正确的使用办法如下:例如:
main()
{
int *i;
char *str;
i=(int*)malloc(sizeof(int));
i=420;
str=(char*)malloc(20);
str="Good, Answer!";
.
.
.
}
上例中, 函数(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)
#p# 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, "Good News!"); /*给数组赋字符串*/
.
.
.
}
上面程序在编译时, 遇到char s[30]这条语句时, 编译程序会在内存的某处留出连续30个字节的区域, 并将第一个字节的地址赋给s。当遇到strcpy( strcpy 为Turbo C2.0的函数)时, 首先在目标文件的某处建立一个"Good News!" 的字符串。其中表示字符串终止, 终止符是编译时自动加上的, 然后一个字符一个字符地复制到s所指的内存区域。因此定义字符串数组时, 其元素个数至少应该比字符串的长度多1。
注意:
1. 字符串数组不能用"="直接赋值, 即s="Good News!"是不合法的。所以应分清字符串数组和字符串指针的不同赋值方法。
2. 对于长字符串, Turbo C2.0允许使用下述方法:例如:
main()
{
char s[100];
strcpy(s, "The writer would like to thank you for"
"your interest in his book. He hopes you"
"can get some helps from the book.");
.
.
.
}

(3)指针数组赋值.例如:
main()
{
char *f[2];
int *a[2];
f[0]="thank you"; /*给字符型数组指针变量赋值*/
f[1]="Good Morning";
*a[0]=1, *a[1]=-11; /*给整型数数组指针变量赋值*/
.
.
.
}

 

上下文章:

 

上一篇文章: C教程-----数据类型、变量和运算符(5) 下一篇文章: C教程-----数据类型、变量和运算符(3)

相关文章:

  • MS Sql Server数据库分区
  • Photoshop CS4教程:打造新年元旦主题海报
  • PS教程:调出照片的柔和梦幻色彩
  • Photoshop教程:将儿童照制作成拼图效果
  • PhotoShop教程:制作漂亮的灯笼

相关软件:

  • 腾讯QQ IP数据库 1225 纯真版
  • BFC数据采集器 4.6.0
  • DataExplore数据恢复大师 2.8
  • 网络数据包嗅探专家 V2.4
  • API拦截教程 V1.0
  • 计算机等级考试训练模拟软件(三级数据库技术) V1.01

 

快速导航

  • 网络学院
  • 精品汇聚
  • 字体下载
  • 教程下载
  • ASP源码
  • PHP源码
  • Net源码
  • JSP 源码

计算机等级考试分类导航

  • 计算机等级考试动态
  • 计算机一级考试
  • 计算机二级考试
  • 计算机三级考试
  • 计算机四级考试

本类经典文章推荐

  • 全国计算机等级考试三级网络技术(...
  • 三级网络技术复习笔记(第1-2章)
  • 三级笔试样题(PC技术)
  • 三级数据库技术样题
  • 三级网络技术复习笔记(5-7)
  • 三级网络技术复习笔记(第3-4章)
  • 笔试样题(网络技术)
  • 机考如何避免范围性错误
  • 2003年最新三级网络模拟题(2)
  • 全国计算机等级考试三级网络技术部...

计算机等级考试动态阅读排行

  • 完整的计算机等级考试上机模拟系统
  • 9月17日计算机等级考试二级VF答案
  • 历年操作系统论述题及答案(2)
  • 计算机等级考试:VFp练习题1
  • 全国计算机等级考试三级网络技术(...
  • 计算机等级考试:VFp练习题2
  • 2005年全国计算机等级考试全真模拟...
  • 计算机二级VB软件环境、考试时间、...
  • 全国计算机等级考试报名时间、级别...
  • 三级网络技术复习笔记(第1-2章)

计算机等级考试阅读总排行

  • 全国计算机等级考试一级模拟试题01
  • 全国计算机等级考试一级模拟试题10
  • 全国计算机等级考试一级模拟试题08
  • 全国计算机等级考试一级模拟试题02
  • 全国计算机等级考试一级考试最新模...
  • 全国计算机等级考试一级模拟试题07
  • 一级(WINDOWS)试题解析-Word篇
  • 全国计算机等级考试上机考试应试技...
  • 全国计算机等级考试一级模拟试题03
  • 全国计算机等级考试一级模拟试题06

广告位置

字母检索 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 回到顶部

关于我们 | 版权声明 | 免责条款 | 广告联系 | 软件发布 | 下载帮助 | 下载排行 | 网站地图 | 特别鸣谢 | 友情连接

copyright; 2005-2008 D9soft.com 第九软件网 版权所有