指针型变量,以及其大小

指针型变量   其大小为4字节表示地址,与里面存放的值的类型无关

例如:

main()

{

int*i;

char*str;

*i=100;

str="Good";

}

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

*str表示str是一个字符型指针,即保留某个字符地址。在初始化时,str没有什么特殊的值,而在执行str="Good"时,编译器先在目标文件的某处保留一个空间存放"Good\0"的字符串,然后把这个字符串的第一个字母"G"的地址赋给str, 其中字符串结尾符"\0"是编译程序自动加上的。

 

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

例如:

main()

{

int*i;

char*str;

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

*i=420;//尤其要注意,此时是把420存放到i指向的内存 

str=(char*)malloc(20);

str="Good, Answer!";//直接就是指向的地址 ??  

}

 

如果要使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指向的下一个字节中就错了。TurboC2.0中只要说明i为整型指针,

则(i+1) 等价于 i+1*sizeof(int)

同样(i+2) 等价于 i+2*sizeof(int)

posted on 2011-05-26 22:01  xuq  阅读(445)  评论(0编辑  收藏  举报

导航