博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于指针
阅读量:4509 次
发布时间:2019-06-08

本文共 717 字,大约阅读时间需要 2 分钟。

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

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

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的区别,详见

5、有关NULL

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

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

char Value[255] = {0};

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

if(Value == NULL)    //错误

{.....}

转载于:https://www.cnblogs.com/lilideboke/p/3158627.html

你可能感兴趣的文章
Java学习笔记_180713_TreeMap_Comparator重写
查看>>
ttt
查看>>
Finance_finacial_engineering_02
查看>>
抓取windows系统进程
查看>>
Nginx(一)
查看>>
Ajax
查看>>
Fast R-CNN(RoI)
查看>>
laravel怎么创建一个简单的blog
查看>>
ServerVersion = “conn.ServerVersion”引发了“System.InvalidOperationException”类型的异常...
查看>>
网络编程——UDP协议,SocketServer模块介绍
查看>>
oracle: 分割字符串,或者查找字段里面的关键字(关键字1,关键字2,关键字3)...
查看>>
向Array中添加改进的冒泡排序
查看>>
linux命令 -- 网站
查看>>
deviceOne -- js的本地搜索
查看>>
Tensorflow--梯度及梯度下降法
查看>>
代码段
查看>>
利用 autoconf 和 automake 生成 Makefile 文件
查看>>
php glob()函数实现目录文件遍历与寻找与模式匹配的文件路径
查看>>
CentOS6.3 编译安装LAMP(2):编译安装 Apache2.2.25
查看>>
》》》《类的继承》
查看>>