工作了这么长时间,对于指针这块还是模模糊糊,最近有些体会,如下:

指针一定是要指向某块内存的,若定义了某个指针变量,既没有给它动态申请内存也没有让它指向某块内存,这时给它赋值是错误的,例:

1、int *Value = NULL;

*Value = 1;    //错误,因为没有内存用来存放整数1

2、若给指针动态分配内存之后,再进行赋值,是正确的

int *Value = (int *)malloc(4);  //为指针变量Value动态申请4个字节的内存

*Value = 1;    //正确

//....对Value的操作

//操作之后一定要释放内存,以免造成内存泄露

if(Value)

{

  free(Value);

  Value = NULL

}

3、也可以使指针变量指向某块内存

int s = 1;

int *Value = &s;

*Value = 2;

执行结果是:*Value = 2,s = 2

因为指针变量Value所指向的内存是变量s地址所在内存,语句*Value= 2执行之后,内存中的内容已经变为2了,所以s的值为2

4、malloc与new的区别,详见

http://baike.baidu.com/view/1213621.htm?fromId=736228

5、有关NULL

NULL的意思是空指针,也就是说只有指针类型的变量才可以赋值为NULL,其他类型的变量不可以,例:

char Value[255] = NULL;    //错误

char Value[255] = {0};

//.....对Value的操作

if(Value == NULL)    //错误

{.....}