c_c++基础问题(平时读书时笔记)
程序启动 跟程序运行的区别,启动的时候不用加载动态链接库,运行的时候需要查找动态链接库中函数
1 x = x +1 ,x += 1, x ++ 那个效率最高?
{
public :
A() {}
A( int value ) : m_value( value ) {}
A( A other ) { m_value = other.m_value; }
private :
int m_value;
};
int main( void )
{
A a;
A b( a );
return 0;
}
{
assert( strDst != NULL && strSrc != NULL );
char *dst = strDst;
while( *strDst++ = *strSrc++ )
;
*strDst = '\0';
return dst;
}
void test1()
{
char string[10];
char* str1 = "0123456789"; //strlen(str1) = 11
strcpy( string, str1 ); //strlen(string) = 10< strlen(str1) = 11,拷贝字符串时导致数组string溢出,不能正确地将str1复制到string数组中
void test2()
{
char string[10], str1[10];
int i;
{
str1[i] = 'a'; //字符串str不能在循环中结束
}
strcpy( string, str1 ); //str1字符数组中没有'\0',不满足strcpy函数形参的要求,不能正确的完成将str1复制到string中
}
void test3(char* str1)
{
char string[10];
if( strlen( str1 ) <= 10 ) //应该讲条件判断语句改为strlen(str1) < 10,因为strlen(str1)求的长度中不包括'\0'
{
strcpy( string, str1 );
}
{
p = (char *) malloc( 100 );
}
void Test( void )
{
char *str = NULL;
GetMemory( str ); //此时实参str仍然没有变化,即str = NULL,所以不能将一个字符串复制到空指针
strcpy( str, "hello world" );
printf( str );
}
char *GetMemory( void )
{
char p[] = "hello world"; //数组p为函数内部的局部变量,当函数结束时,p所存储的内容也就释放掉啦,此时指针p指向的位置不能确定,有可能是系统区
return p;
}
void Test( void )
{
char *str = NULL;
str = GetMemory(); //打印str的信息不能确定
printf( str );
}
void GetMemory( char **p, int num )
{
*p = (char *) malloc( num ); //没有进行对str是否分配成功的判断
//if( p == NULL )
void Test( void )
{
char *str = NULL;
GetMemory( &str, 100 );
strcpy( str, "hello" ); //未释放申请的内存空间,导致内存泄露
printf( str );
}
void Test( void )
{
char *str = (char *) malloc( 100 ); //没有进行对str是否分配成功的判断
strcpy( str, "hello" );
free( str );
... //省略的其它语句
}
{
int * p; //指针p没有初始化,没有指向确定的内存空间,是一个野指针,将其改为 int p;就可以啦
*p = *p1; // p = *p1;
*p1 = *p2; // *p1 = *p2;
*p2 = *p; // *p2 = p;
}
#define __INCvxWorksh
#ifdef __cplusplus
extern "C" {
#endif
/*...*/
#ifdef __cplusplus
}
#endif
#endif /* __INCvxWorksh */
#define __INCvxWorksh
#ifdef __cplusplus
就是指程序执行前的一些预处理工作,主要指#表示的.
何时需要预编译?
1)、总是使用不经常改动的大型代码体。
答:#include "memory.h"
memset用来对一段内存空间全部设置为某个字符,一般用在对定义的字符串进行初始化为' '或'';例:char a[100];memset(a, '', sizeof(a));
memcpy用来做内存拷贝,你可以拿它拷贝任何数据类型的对象,可以指定拷贝的数据长度;例:char a[100],b[50]; memcpy(b, a, sizeof(b));注意如用sizeof(a),会造成b的内存地址溢出。
答:ASSERT()是一个调试程序时经常使用的宏,在程序运行时它计算括号内的表达式,如果表达式为FALSE (0), 程序将报告错误,并终止执行。如果表达式不为0,则继续执行后面的语句。这个宏通常原来判断程序中是否出现了明显非法的数据,如果出现了终止程序以免导致严重后果,同时也便于查找错误。
(1)不能返回局部变量的引用。
(2)不能返回函数内部new分配的内存的引用。
(3)可以返回类成员的引用,但最好是const。
(4)流操作符重载返回值申明为“引用”的作用:
流操作符<<和>>、赋值操作符=的返回值、拷贝构造函数的参数、赋值操作符=的参数、
c_c++基础问题(平时读书时笔记)的更多相关文章
- 《python编程从入门到实践》读书实践笔记(一)
本文是<python编程从入门到实践>读书实践笔记1~10章的内容,主要包含安装.基础类型.函数.类.文件读写及异常的内容. 1 起步 1.1 搭建环境 1.1.1 Python 版本选择 ...
- [新手必备]Python 基础入门必学知识点笔记
Python 作为近几年越来越流行的语言,吸引了大量的学员开始学习,为了方便新手小白在学习过程中,更加快捷方便的查漏补缺.根据网上各种乱七八糟的资料以及实验楼的 Python 基础内容整理了一份极度适 ...
- MySQL基础之事务编程学习笔记
MySQL基础之事务编程学习笔记 在学习<MySQL技术内幕:SQL编程>一书,并做了笔记.本博客内容是自己学了<MySQL技术内幕:SQL编程>事务编程一章之后,根据自己的理 ...
- Java基础技术JVM面试【笔记】
Java基础技术JVM面试[笔记] JVM JVM 对 java 类的使用总体上可以分为两部分:一是把静态的 class 文件加载到 JVM 内存,二是在 JVM 内存中进行 Java 类的生命周期管 ...
- java基础技术集合面试【笔记】
java基础技术集合面试[笔记] Hashmap: 基于哈希表的 Map 接口的实现,此实现提供所有可选的映射操作,并允许使用 null 值和 null 键(除了不同步和允许使用 null 之外,Ha ...
- 《python编程从入门到实践》读书实践笔记(二)
本文是<python编程从入门到实践>读书实践笔记11章的内容,主要包含测试,为体现测试的重要性,独立成文. 11 测试代码 写在前面的话,以下是我这些年开发中和测试相关的血泪史. 对于一 ...
- 《jQuery基础教程》读书笔记
最近在看<jQuery基础教程>这本书,做了点读书笔记以备回顾,不定期更新. 第一章第二章比较基础,就此略过了... 第三章 事件 jQuery中$(document).ready()与j ...
- Python基础教程【读书笔记】 - 2016/8/3
希望通过博客园持续的更新,分享和记录Python基础知识到高级应用的点点滴滴! 第十一波:第11章 文件和素材 本章更进一步,让程序能够接触更多的领域:文件和流.接下来介绍的函数和对象可以让你在程序 ...
- Python基础教程【读书笔记】 - 2016/7/31
希望通过博客园持续的更新,分享和记录Python基础知识到高级应用的点点滴滴! 第十波:第10章 充电时刻 Python语言的核心非常强大,同时还提供了更多值得一试的工具.Python的标准安装包括 ...
随机推荐
- Node.js的适用场景
高并发.聊天.实时消息推送.服务器做前端资源压缩
- 基于OpenCV读取摄像头进行人脸检测和人脸识别
前段时间使用OpenCV的库函数实现了人脸检测和人脸识别,笔者的实验环境为VS2010+OpenCV2.4.4,opencv的环境配置网上有很多,不再赘述.检测的代码网上很多,记不清楚从哪儿copy的 ...
- [Z] 关于Python Tornado的一些资料
一个简单的样例: http://osedu.net/article/python/2014-03-18/501.html ioloop的官方doc: http://www.tornadoweb.org ...
- Vue2不使用Vuex如何实现兄弟组件间的通信
在一些正规的大型项目的企业级开发过程中我们一般会引入Vuex来对Vue所有组件进行状态管理,可以轻松实现各组件间的通信.但是有时候做做自己的小项目,没有必要使用Vuex时,如何简单的实现组件间的通信? ...
- 转载----开发运维资产管理系统cmdb一些观点扯淡
在新公司负责全网的自动化运维平台及给各个业务线提供接口数据.这工作和以前做的很类似,也算是比较顺手的工作,这段时候遇见一些问题,导致开发的前进速度的放慢了,具体有哪些的不完善,我这里就先不摆出了,但是 ...
- Redis实战——phpredis扩展安装
准备安装软件(download) 1> [redis] http://redis.googlecode.com/files/redis-2.4.3.tar.gz 2> [php ...
- 使用avalon 实现一个序列号功能
avalon"操作数据即操作DOM"的能力,让我们可以专致于业务,写出更专业,更优雅,更易维护的代码来.现在让我们看看如何实现一个序列号输入功能.它的需求以下: 每输入4个字符就跳 ...
- Excel VBA 入门(零)
本教程所用系统环境: Windows 10 Excel 2013 1. 添加开发工具 打开Excel,依然找到"文件"->"选项"->"自 ...
- windows下python安装Numpy和Scipy模块
安装 numpy: 去 http://sourceforge.net/projects/numpy/files/latest/download?source=files 下载相应的exe安装文件. 安 ...
- 【HDU5862】Counting Intersections
题意 有n条线段,且都平行于坐标轴.对于每条线段,给出两个端点的坐标.问一共有多少个线段的交点. 分析 最最简单的扫描法了.用线段树或者树状数组都可以. 由题目可知,线段只有两种,要么平行于x轴要么平 ...