当前位置:  编程技术>c/c++/嵌入式

函数外初始化与函数内初始化详细解析

    来源: 互联网  发布时间:2014-10-21

    本文导语:  关于函数外初始化与函数内初始化之前一直分的不是太清,也不太在意。昨天终于出现了这方面的问题,所以决定好好看下,以下是这次的一些收获,先看测试代码: 代码如下:#include "stdafx.h"#include using namespace std;bool FillStr(char...

关于函数外初始化与函数内初始化之前一直分的不是太清,也不太在意。昨天终于出现了这方面的问题,所以决定好好看下,以下是这次的一些收获,先看测试代码:

代码如下:

#include "stdafx.h"
#include
using namespace std;
bool FillStr(char *&szDst, int nSize)
{
 bool bRet = false;
 if (nSize > 0)
 {
  szDst = (char*)malloc(sizeof(char) * nSize);
  memset(szDst, 0, sizeof(char) * nSize);
  strcpy(szDst, "hello, world");
  bRet = true;
 }
 return bRet;
}
bool FillStr(char *szDst)
{
 bool bRet = false;
 if (szDst)
 {
  strcpy(szDst, "hello, 5.1");

  bRet = true;
 }
 return bRet;
}
int _tmain(int argc, _TCHAR* argv[])
{
 char* szWord = NULL;
 // 第一种
 //FillStr(szWord, 64);
 // 第二种
 szWord = (char*)malloc(sizeof(char) * 64);
 memset(szWord, 0, sizeof(char) * 64);
 FillStr(szWord);
 printf("%s/n", szWord);
 if (szWord)
 {
  free(szWord);
  szWord = NULL;
 }
 getchar();
 return 0;
}

1.函数内初始化:bool FillStr(char *&szDst, int nSize);

第一个参数中的&一定不能少,这是因为在函数外部我们只声明了这个指针,具体这个指针指向内存中的哪个地址我们并不知道,所以&是为了说明传递的是这个指针的引用,那么在函数内初始化后这个指针的地址也就是外面指针的地址了。

第二个参数是我们要分配的字符个数。

2.函数外初始化:bool FillStr(char *szDst);

这个函数的参数加不加&都可以,因为传进来的时候已经初始化了,已经有了一个确切的地址,如果不加&的话传进来的就是原来地址的拷贝,如果加&的话就是同一个指针。所以不管怎样它们传进来的都是一样的地址,对其操作都是对同一块内存的操作。

虽然上面两种方法都可以达到相同的效果,但是我认为还是第二种方式好些,这样符合谁分配谁释放的原则。


    
 
 

您可能感兴趣的文章:

  • C++ Strings(字符串) 成员 Constructors:构造函数,用于字符串初始化
  • 既然在定义实例变量的时候可以初始化实例变量的值,那还要构造函数干吗?谢谢!
  • php析构函数与对象初始化的例子
  • php初始化对象与析构函数例子
  • php初始化对象和析构函数的简单实例
  • c++ 构造函数的初始化列表
  • C++初始化函数列表详细解析
  • c++基础语法:构造函数初始化列表
  • 成员初始化列表与构造函数体中的区别详细解析
  • C++构造函数初始化顺序详解
  • php通过pack和unpack函数实现对二进制数据封装及解析
  • php trim函数执行过程解析
  • C++空类默认函数详细解析
  • PHP json_decode函数详细解析
  • shell自定义函数及参数调用解析
  • jquery toggle()函数实例解析
  • 内联函数inline与宏定义深入解析
  • C与C++ 无参函数的区别解析
  • C#委托所蕴含的函数指针概念详细解析
  • 解析c语言中"函数调用中缺少哨兵"的情况分析
  • C#中私有构造函数的特点和用途实例解析
  • C语言static修饰函数详细解析
  • 深入解析函数指针与返回函数的指针
  • C++指向函数的指针实例解析
  • 解析在MYSQL语法中使用trim函数删除两侧字符
  • 解析C++中虚析构函数的作用
  • C语言typedef与复杂函数声明问题的深入解析
  • php取整函数实例解析
  • C++中函数的默认参数详细解析
  • php中sprintf与printf函数用法区别解析
  • Linux系统中C语言编程创建函数fork()执行解析
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • C++ Maps 成员 key_comp():返回比较元素key的函数
  • 请问:定义了2个函数,其中第一个函数要访问另外一个函数的变量,怎么处理阿?谢谢
  • C++ Maps 成员 value_comp():返回比较元素value的函数
  • 如果知道一个函数的地址或函数名,如何得到函数所在的文件名?
  • C++ MultiMaps 成员 key_comp():返回比较key的函数
  • java的数学函数在那个类中,如幂函数、指数、对数、双曲线函数等?
  • C++ MultiMaps 成员 value_comp():返回比较元素value的函数
  • 一个父类的构造函数的参数是(Applet applet),请问它的子类构造函数当中应怎样调用父类构造函数?
  • C++ STL Bitsets构造函数及成员函数解释及代码示例
  • 虚函数被类的构造析构函数和成员函数调用虚函数的执行过程
  • linux c 生成随机数srand函数和rand函数介绍及代码示例
  • 在内核的某个函数中,如何能知道是哪个用户空间的函数调用了它,以及这个用户空间函数所在的文件?
  • Linux下gettimeofday()函数和clock()函数:精确到毫秒级的时间
  • 在dos下访问内存的MK_FP函数在linux下对应什么函数?int86()函数呢?
  • Linux c++虚函数(virtual function)简单用法示例代码
  • 一个静态库包含多个函数,应用程序连接了库中的某个函数,应用程序目标代码中是否还包含了该静态库中的其他函数代码?
  • sharepoint 2010 使用STSNavigate函数实现文件下载举例
  • Oracle 函数大全[字符串函数,数学函数,日期函数]第1/4页
  • cityhash 32位,64位和128位介绍及函数列表
  • js的众多函数令小弟实在搞不清楚!哪有函数速查手册之类的软件或者书籍!谢了!比如,setInterval、clearInterval这两个函数是干什么的?
  • PHP的substr() 函数用法
  • 虚函数与纯虚函数(C++与Java虚函数的区别)的深入分析


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3