Chapter5.h

  1. #ifndef __CHAPTER_5_
  2. #define __CHAPTER_5_
  3.  
  4. /*《深入理解C指针》学习笔记 -- 第五章*/
  5.  
  6. /*不应该改动的字符串就应该用 const char* 去修饰*/
  7. size_t __strlen_test(const char*);
  8.  
  9. /*返回字符串的几种方法*/
  10. char* __return_str__test();
  11.  
  12. #endif

Chapter5.cpp

  1. #include "Chapter5.h"
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <time.h>
  5. #include <string.h>
  6.  
  7. size_t __strlen_test(const char* pstr)
  8. {
  9. size_t length = 0;
  10.  
  11. /*
  12. 由于參数用const去修饰,所以。在函数中,我们不能去改变指针指向的字符串,
  13. 否则,会产生编译错误
  14. */
  15. // *pstr = 'a'; 这里编译错误
  16.  
  17. while (*pstr++)
  18. ++length;
  19.  
  20. return length;
  21. }
  22.  
  23. /*返回字符串的几种方法*/
  24. char* __return_str__test()
  25. {
  26. /*
  27. 第一种方法
  28. 返回一个字面值常量,由于这是一个字面值常量,它存储在常量存储区中,
  29. 当程序终止时。才会消失,所以,返回它的地址不会出现故障
  30. */
  31. /*
  32. srand(time(NULL));
  33.  
  34. int num = rand() % 2;
  35.  
  36. if (num % 2 == 0)
  37. return "even number";
  38. else
  39. return "odd number";
  40. */
  41.  
  42. /*
  43. 另外一种方法
  44. 返回一个动态内存指向的地址,由于这个地址是在堆中分配的,所以,仅仅有
  45. 当程序猿自己释放这块内存时,它才会消失,所以。返回它的地址不会出现故障
  46. */
  47. /*
  48. char* p_str = (char*)malloc(sizeof(char) * 16);
  49. strcpy(p_str, "DLUTBruceZhang");
  50.  
  51. return p_str;
  52. */
  53.  
  54. /*
  55. 第三种方法
  56. 返回一个静态字符串,这个字符串存储在静态存储区,即全局变量存储的地方。仅仅有当
  57. 程序结束时,这块内存才会消失。所以,返回它的地址不会出现故障
  58. */
  59. /*
  60. static char str[] = "DLUTBruceZhang";
  61.  
  62. return str;
  63. */
  64.  
  65. /*
  66. 第四种方法
  67. 首先,这是一个错误的方法
  68. 它返回的是一个局部变量的地址,这块内存存储在栈中,当函数返回后。这块内存就会被
  69. 别的值覆盖,即指向的地址存储的不是想要的值,我们在程序中是须要避免的
  70. */
  71. /*
  72. char __str[] = "DLUTBruceZhang";
  73.  
  74. return __str;
  75. */
  76. }

深入理解 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. C# 添加应用程序包

    项目中可能会遇到某些扩展方法不可以应用的情况,这时候需要在项目中引用程序包 步骤如下: 回车即可

  2. /etc/rsyslog.conf配置文件说明

    一.authpriv.*                                      /var/log/secure 服务名称[连接符号]日志等级               日志记录位 ...

  3. 多个tomcat配置,解决冲突问题

    一.一般修改 路径: /opt/apache-tomcat/conf/server.xml 1.第一个tomcat使用默认配置 2.第二个tomcat一般配置 二.特殊修改 1.第二个tomcat特殊 ...

  4. Java基础6一面向对象

    面向对象的编程思想:是以事物的整体的为基本单位,从事物的属性和行为两个方面进行描述. 特点: Java来源于生活服务于生活 用面向对象的思想能够接近正常的思维方式. 面向对象语言中有设计模式一说. 在 ...

  5. [ Java ] [ JUnit ] [ Eclipse ] coverage

    官方資訊: https://www.eclemma.org/ - 簡短使用範例說明: https://dzone.com/articles/java-code-coverage-in-eclipse ...

  6. Caffe+UbuntuKylin14.04_X64+CUDA 6.5配置

    在编译Caffe的漫长过程中,经过了一个又一个坑,掉进去再爬出来,挺有趣的.对比原文有修改! LInux下配置安装:(本文档使用同一块NVIDIA显卡进行显示与计算, 如分别使用不同的显卡进行显示和计 ...

  7. C# 递归产生树

    //递归产生树 private void CreateTwo(TreeNode node, int id) { #region --根据指定ID查找数据到 dt string strSql = &qu ...

  8. 操作ajax生成页面的一个问题

    一般而言,js代码都放在页面的底部.在做项目的过程中,发现放在底部的代码没有执行,原来操作的是ajax生成的部分.这时候,页面加载js的顺序就要小心了.例子如下: <!doctype html& ...

  9. javascript面向对象中继承实现的几种方式

    1.原型链继承: function teacher(name){ this.name = name; } teacher.prototype.sayName = function(){ alert(t ...

  10. python爬虫简单架构原理及示例

    网页下载器示例: # coding:utf-8 import urllib2 import cookielib url = "http://www.baidu.com" print ...