指针型变量,以及其大小
指针型变量 其大小为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)