C规范(1) - 结构体或类定义的好习惯
来源:互联网 发布:阿里云机房选择 编辑:程序博客网 时间:2024/05/15 00:05
请看如下代码
typedef struct Result{char name[20];int age;Rect rect;char *pic;long takesTime;}Result;然后再定义
Result r1;Result *r2 = new Result();此时调试中的内存状态如下图所示
假如入我要给pic负值,并先做非空判断
if(r1.pic!=NULL) sprintf(r1.pic, "e:/123.jpg");程序会直接崩溃,因为此时的pic变量并未初始化内存控件,但指向的地址是却是非空的debug地址
可以用如下方式来解决
1. 方法1 memset
Result r1;Result *r2 = new Result();memset(&r1, 0, sizeof(Result));memset(r2, 0, sizeof(Result));
此时再执行下面的语句就没问题了
if(r1.pic!=NULL) sprintf(r1.pic, "e:/123.jpg");
2. 方法2 内部初始化
还有一个更好的方式,就是在结构体内部自己初始化typedef struct Result{char name[20];int age;Rect rect;char *pic;long takesTime;Result(){ memset(this, 0, sizeof(Result));}}Result;
此时物理用户怎么定义变量都会默认初始化
Result r1;Result *r2 = new Result();调试截图如下
原文:http://blog.csdn.net/lanmo555/article/details/19118903
0 0
- C规范(1) - 结构体或类定义的好习惯
- 一些好的习惯 c
- C#==>用户定义类(或结构)的类型转换
- 编程规范(经常遇到的)-好习惯
- magento的命名约定(或称习惯,规范)
- magento的命名约定(或称习惯,规范)
- JVM规范定义的标准结构
- 利用宏实现定义结构体的好方法
- 结构体的定义初始化与用法(好详细)
- 【规范】C语言中定义变量只能在一个函数或一个块的开始吗?
- C语言结构体数组的定义
- 编程好习惯1——头文件中永远只定义确实必要的东西
- C/S结构的服务器编写习惯
- 结构体或类定义中对变长成员的处理
- C结构定义的问题
- 用C#制作屏幕捕获程序 和 C#编码规范、编程好习惯
- C# 编码规范和编程好习惯
- C# 编码规范和编程好习惯
- 配置varnish apache 后端显示真实IP
- Nginx反向代理获取客户端真实IP
- js 验证各种格式类型的正则表达式
- 《基于ORACLE SQL优化》读书笔记-特殊执行计划
- C++之多态与虚函数
- C规范(1) - 结构体或类定义的好习惯
- Wireshark – No interfaces to capture on using Ubuntu 12.04 - See more at: http://www.networkingnut.n
- 细说Form表单
- [XMPP]xampp服务器环境搭建
- 程序员究竟该如何提高效率
- 命令行下直接编译Servlet
- apache模块开发之helloworld
- Android之网络编程
- 问题旅程篇1——Android从网上Down的工程无语法错误,却一直提示纠正java buildpath