深入理解 C 指针阅读笔记 -- 第五章
2014-11-19 08:56
267 查看
Chapter5.h
Chapter5.cpp
#ifndef __CHAPTER_5_ #define __CHAPTER_5_ /*《深入理解C指针》学习笔记 -- 第五章*/ /*不应该修改的字符串就应该用 const char* 去修饰*/ size_t __strlen_test(const char*); /*返回字符串的几种方法*/ char* __return_str__test(); #endif
Chapter5.cpp
#include "Chapter5.h" #include <stdio.h> #include <stdlib.h> #include <time.h> #include <string.h> size_t __strlen_test(const char* pstr) { size_t length = 0; /* 由于参数用const去修饰,所以,在函数中,我们不能去改变指针指向的字符串, 否则,会产生编译错误 */ // *pstr = 'a'; 这里编译错误 while (*pstr++) ++length; return length; } /*返回字符串的几种方法*/ char* __return_str__test() { /* 第一种方法 返回一个字面值常量,因为这是一个字面值常量,它存储在常量存储区中, 当程序终止时,才会消失,所以,返回它的地址不会出现问题 */ /* srand(time(NULL)); int num = rand() % 2; if (num % 2 == 0) return "even number"; else return "odd number"; */ /* 第二种方法 返回一个动态内存指向的地址,因为这个地址是在堆中分配的,所以,只有 当程序员自己释放这块内存时,它才会消失,所以,返回它的地址不会出现问题 */ /* char* p_str = (char*)malloc(sizeof(char) * 16); strcpy(p_str, "DLUTBruceZhang"); return p_str; */ /* 第三种方法 返回一个静态字符串,这个字符串存储在静态存储区,即全局变量存储的地方,只有当 程序结束时,这块内存才会消失,所以,返回它的地址不会出现问题 */ /* static char str[] = "DLUTBruceZhang"; return str; */ /* 第四种方法 首先,这是一个错误的方法 它返回的是一个局部变量的地址,这块内存存储在栈中,当函数返回后,这块内存就会被 别的值覆盖,即指向的地址存储的不是想要的值,我们在程序中是需要避免的 */ /* char __str[] = "DLUTBruceZhang"; return __str; */ }
相关文章推荐
- 深入理解 C 指针阅读笔记 -- 第六章
- 深入理解 C 指针阅读笔记 -- 第四章
- 深入理解 C 指针阅读笔记 -- 第三章
- 深入理解 C 指针阅读笔记 -- 第二章
- 深入理解 C 指针阅读笔记 -- 第一章
- 深入理解 C 指针阅读笔记 -- 第六章
- 深入理解C指针----学习笔记
- 深入理解C指针学习笔记(四)
- 深入理解JVM阅读笔记-垃圾收集器1
- 深入理解软件构建系统原理与最佳实践阅读笔记
- 深入理解C指针学习笔记之常量和指针(六)
- 深入理解JVM阅读笔记-垃圾收集算法(字太多,不手打转载了)
- [阅读笔记]深入理解计算机系统
- 深入理解C指针学习笔记(二)
- 深入理解网络技术内幕 阅读笔记(一)
- 深入理解Linux内核-第五章笔记
- 【转】深入理解Linux内核--信号(阅读笔记)
- 深入理解网络技术内幕 阅读笔记(三)
- 深入理解C指针学习笔记(一)
- 深入理解JVM阅读笔记-内存溢出小结