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的标准安装包括 ...
随机推荐
- Linux系统SVN安装指导配置说明
Linux 系统 SVN 安装指导配置说明 1 安装 SVN 前检查: 检查是否安装 SVN : rpm -qa subversion 查看安装 SVN 版本信息: svnserve --vers ...
- Asp.net 的工作原理
转:http://www.cnblogs.com/linjiancun/archive/2010/09/14/1825662.html 1.1.1 Asp.net 的工作原理 ...
- Win7 资源管理器右键固定的文件夹不见了
把常用的文件夹固定到任务栏的资源管理器右键菜单中 某天突然就不见了! %APPDATA%\Microsoft\Windows\Recent\AutomaticDestinations “最近" ...
- 汉字转拼音开源工具包Jpinyin介绍
最近要实现一个根据词语得到词语对应拼音的功能,找到了Jpinyin这个开源工具包,使用下来发现它非常强大,完全满足我的需求,下面对它做一个简单的介绍,希望能够帮助到有需要的朋友. https://gi ...
- maven-resources-plugin使用
命令行中带参数指定${}变量值 <build> <resources> <resource> <directory>src/main/resources ...
- UNITY UI字体模糊的原因
根本原因:像素少. 解决办法:字体的 font size将像素设置大些,然后用scale来缩放大小
- Python 格式化输出 ( 颜色 )
简介: Python 中如果想让输出有颜色显示,实现起来还是挺容易的,你需要拥有 termcolor 的知识! 参考地址:https://pypi.python.org/pypi/termcolor/ ...
- PHP 缓存插件之 Zend Opcache ( 取代 APC )
简介: Zend Opcache .APC 这都是 PHP 代码加速器,将 PHP 源代码的编译结果缓存起来,再次调用时对比时间标记,如果没有改变则使用缓存数据,免去再次解析代码的开销. APC 止步 ...
- linux 确定网卡接口
方法: ifconfig -a 执行一遍:ifconfig -a: 插上网线 接口会 running. 方法:ethtool 执行 # ethtool -p eth0 时,eth0对应的网口的灯就 ...
- mysql 去重
select *, count(distinct name) from table group by name http://blog.sina.com.cn/s/blog_7e7249c301012 ...