• 深入理解 C 指针阅读笔记 -- 第五章


    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;
    	*/
    }


  • 相关阅读:
    [Linux] git send-email的使用
    Linux 下 grep 命令常用方法简介
    Scikit-learn的kmeans聚类
    python 基础知识
    Python
    xgboost 特征选择,筛选特征的正要性
    阿里菜鸟-算法(一面)
    基于Ranking-CNN的年龄识别(CVPR_2017)
    基于多输出有序回归的年龄识别(CVPR_2016)
    在caffe中用训练好的 caffemodel 来分类新的图片所遇到的问题
  • 原文地址:https://www.cnblogs.com/blfbuaa/p/6900877.html
Copyright © 2020-2023  润新知