打印本文 打印本文  关闭窗口 关闭窗口  
C语言基础教程(二)数据类型、变量和运算符(11)
作者:佚名  文章来源:不详  点击数  更新时间:2008/4/18 13:58:27  文章录入:杜斌  责任编辑:杜斌

对于指针变量的使用要特别注意。上例中两个指针在说明前没有初始化, 因此
这两指针为随机地址, 在小存储模式下使用将会有破坏机器的危险。正确的使用办
法如下:
    例如:
     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)
打印本文 打印本文  关闭窗口 关闭窗口