新手必看 什么是c语言程序设计( 五 )


2. 数组的初始化
数组变量的初始化如:

新手必看  什么是c语言程序设计

文章插图
数组进行初始化有下述规则:
① 数组的每一行初始化赋值用“{}”并用“,”分开,总的再加一对“{}”括起来,最后以“;”表示结束 。
② 多维数组的存储是按最右维数的变量变化最快的原则 。
③ 多维数组存储是连续的,因此可以用一维数组初始化的办法来初始化多维数组 。
例如:
④ 对数组初始化时,如果初值表中的数据个数比数组元素少,则不足的数组元素用0来填补 。
⑤ 对指针型变量数组可以不规定维数,在初始化赋值时,数组维数从0开始被连续赋值 。
例如:
char *f[]={'a','b','c'};
初始化时将会给3个字符指针赋值,即:*f[0]='a',*f[1]='b',*f[2]='c' 。
3. 数组变量的赋值
整型数组和浮点数组的赋值,例如:
新手必看  什么是c语言程序设计

文章插图
字符串数组的赋值,例如:
新手必看  什么是c语言程序设计

文章插图
上面程序在编译时,遇到char s[30]这条语句时,编译程序会在内存的某处留出连续30个字节的区域,并将第一个字节的地址赋给s 。当遇到函数时,首先在目标文件的某处建立一个“Good News!”的字符串 。其中“”表示字符串终止,终止符是编译时自动加上的,然后一个字符一个字符地复制到s所指的内存区域 。因此定义字符串数组时,其元素个数至少应该比字符串的长度多1 。
提示
【新手必看什么是c语言程序设计】① 字符串数组不能用“=”直接赋值,即s=“Good News!”是不合法的 。所以应分清字符串数组和字符串指针的不同赋值方法 。
② 对于长字符串,Turbo C2.0允许使用下述方法:
例如:
新手必看  什么是c语言程序设计

文章插图
(二)指针
1. 指针基本形式
指针定义的一般形式为:类型识别符 *指针变量名;
例如:
C51 支持一般指针( )和存储器指针( ) 。
(1)一般指针
一般指针的声明和使用均与标准C相同,不过同时还可以说明指针的存储类型 。
例如:
以上的long、char等指针指向的数据可存放于任何存储器中 。一般指针本身用3个字节存放,分别存储存储器类型、高位偏移和低位偏移量 。
(2)存储器指针
基于存储器的指针说明时即指定了存贮类型,例如:
这种指针存放时,只需1或2个字节就够了,因为只需存放偏移量 。
2. 指针变量的初始化
例如:
新手必看  什么是c语言程序设计

文章插图
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*)((int));