Chapter5.h

#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 指针阅读笔记 -- 第五章的更多相关文章

  1. 深入理解 C 指针阅读笔记 -- 第六章

    Chapter6.h #ifndef __CHAPTER_6_ #define __CHAPTER_6_ /*<深入理解C指针>学习笔记 -- 第六章*/ typedef struct _ ...

  2. 深入理解 C 指针阅读笔记 -- 第二章

    Chapter2.h #ifndef __CHAPTER_2_ #define __CHAPTER_2_ /*<深入理解C指针>学习笔记 -- 第二章*/ /* 内存泄露的两种形式 1.忘 ...

  3. 《图解HTTP》阅读笔记-第五章-web服务器

      第五章.与HTTP协助的web服务器单台虚拟主机实现多个域名可以用单台物理主机运行多台虚拟主机,这些虚拟主机的IP相同,而虚拟主机有可以寄存多个不同主机名和域名的web网站,所以要保证发送HTTP ...

  4. 《Interest Rate Risk Modeling》阅读笔记——第五章:久期向量模型

    目录 第五章:久期向量模型 思维导图 久期向量的推导 久期向量 广义久期向量 一些想法 第五章:久期向量模型 思维导图 久期向量的推导 \[ V_0 = \sum_{t=t_1}^{t_n} CF_t ...

  5. Hadoop阅读笔记(五)——重返Hadoop目录结构

    常言道:男人是视觉动物.我觉得不完全对,我的理解是范围再扩大点,不管男人女人都是视觉动物.某些场合(比如面试.初次见面等),别人没有那么多的闲暇时间听你诉说过往以塑立一个关于你的完整模型.所以,第一眼 ...

  6. 《Linux内核设计与实现》读书笔记——第五章

    <Linux内核设计与实现>读书笔记--第五章 标签(空格分隔): 20135321余佳源 第五章 系统调用 操作系统中,内核提供了用户进程与内核进行交互的一组接口.这些接口让应用程序受限 ...

  7. Android群英传笔记——第五章:Android Scroll分析

    Android群英传笔记--第五章:Android Scroll分析 滑动事件算是Android比较常用的效果了,而且滑动事件他本身也是有许多的知识点,今天,我们就一起来耍耍Scroll吧 一.滑动效 ...

  8. 《Linux内核设计与实现》第四周读书笔记——第五章

    <Linux内核设计与实现>第四周读书笔记--第五章 20135301张忻 估算学习时间:共1.5小时 读书:1.0 代码:0 作业:0 博客:0.5 实际学习时间:共2.0小时 读书:1 ...

  9. Programming Entity Framework-dbContext 学习笔记第五章

    ### Programming Entity Framework-dbContext 学习笔记 第五章 将图表添加到Context中的方式及容易出现的错误 方法 结果 警告 Add Root 图标中的 ...

随机推荐

  1. Python迭代与递归方法实现斐波拉契数列

    首先是迭代的方法实现: def f(n): f1, f2, fn = 1, 1, 1 while n>2: fn = f1 + f2 f1 = f2 f2 = fn n = n - 1 retu ...

  2. html页面中苹果手机遇到数字换行、样式变形

    在做项目中遇到过几回苹果手机读取html页面时,如果出现一串数字,html页面会折行.变形,最后发现是因为苹果手机的打电话功能,如果html上有数字的话,苹果手机会以为是电话号码,就会改变其样式只需要 ...

  3. VS2005常用的快捷键分享

    VS2005代码编辑器的展开和折叠代码确实很方便和实用.以下是展开代码和折叠代码所用到的快捷键,很常用: Ctrl + M + O: 折叠所有方法 Ctrl + M + M: 折叠或者展开当前方法 C ...

  4. CSS3伪元素、伪类选择器

    伪元素选择器: ::first-letter:为某个元素中的文字的首字母或第一个字使用样式. ::first-line:为某个元素的第一行文字使用样式. ::before:在某个元素之前插入一些内容. ...

  5. win10下mysql安装过程中遇到的各种坑

    前几天重装系统,又要下回来mysql,但没想到还是遇到了许多麻烦,翻了十多篇博文才搞定,写个总结出来方便以后不要重复踩坑,也给大家参考参考. 1.下载与安装 这个没什么好说的,下载地址网上一大堆,安装 ...

  6. java网络编程之socket(1)

    网络编程是什么 网络编程的本质是两个设备之间的数据交换,当然,在计算机网络中,设备主要指计算机.数据传递本身没有多大的难度,不就是把一个设备中的数据发送给两外一个设备,然后接受另外一个设备反馈的数据. ...

  7. undefined reference to “boost” in Qt—Ubuntu

    一:使用PCL时遇到的问题 原因:缺少boost的lib包含: 在Pro文件里面添加: LIBS += -lboost_system .....................等库文件包含 二:编译B ...

  8. ObjecT4:On-line multiple instance learning (MIL)学习

    原文链接:http://blog.csdn.net/ikerpeng/article/details/19235391 用到论文,直接看翻译. 文章:Robust object tracking wi ...

  9. (转)微服务架构 互联网保险O2O平台微服务架构设计

    http://www.cnblogs.com/Leo_wl/p/5049722.html 微服务架构 互联网保险O2O平台微服务架构设计 关于架构,笔者认为并不是越复杂越好,而是相反,简单就是硬道理也 ...

  10. java连接AD域

    import org.springframework.boot.autoconfigure.SpringBootApplication; import java.util.Hashtable; imp ...