当前位置: 首页 > 编程语言 > C语言 > 正文

C语言基础教程(二)数据类型、变量和运算符(11)

时间:2007-05-04 王大刚
对于指针变量的使用要特别注意。上例中两个指针在说明前没有初始化,因此这两指针为随机地址, 在小存储模式下使用将会有破坏机器的危险。正确的使用办法如下:
例如:
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<alloc.h>
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)