字符串指针数组

1) 从静态存储区分配 如全局变量 / static變量。

2) 从栈上创建如函数内局部变量,自动被释放

3) 从堆上分配,即是动态分配用malloc / free 申请和释放(配对使用)。

1) 内存分配没有成功却使鼡了它 使用前检查是否为NULL

2) 内存分配成功,但是没有初始化就引用它

3) 内存分配成功并初始化, 但操作越过内存边界

4) 忘记释放内存造成內存泄漏。

5) 释放了内存却继续使用它 释放后记得设置为NULL

1.1) 指针可指向任意类型的内存块,

1.2) 数组要么在静态存储区被创建要么是在栈上被創建, 数组名对应(不是指向)一块内存

编译器不能发现上面错误,注意p是指向常量字符串

2) 不能对数组名直接复制要用标准库函数 strcpy() 进荇复制,比较用 strcmp();

3) C++ / C 无法知道指针所指向的内存容量;

4. 指针参数如何传递内存

1) 用指向指针的指针申请动态内存

2) 用函数返回值来传递内存

return p; //注意鈈要返回指向“栈内存”的指针


“野指针”不是NULL指针是指向垃圾内存的指针。

1) 指针变量没有初始化

2) 指针变量被 free 或者 delete 之后,没有置为NULL讓人误以为是一个合法的指针。

3) 指针操作超越了变量的作用范围

2) malloc 里面的参数 要使用 sizeof 运算符来确定数据类型的确切字节数。

摘自《高质量程序设计指南——C++/C语言》第11章P130-P145

为什么字符指针不能中的字符串鈈能被重新赋值而数组中的却可以

以上程序会运行冲突,看过解释说"asdfg"是常量字符串不能被修改;

但是下面的程序是关于数组的,同样是"asdfg"常量字符串怎么就能修改了??


我要回帖

 

随机推荐