C/C++中利用空指针简化代码,提高效率
这里的写法,可以避免使用 for 循环,减少栈空间内存的使用和减少运行时的计算开销!
#include iostream>
#include string>
using namespace std;
void print_char(char* array[]);//函数原形声明
void main(void)
{
char* test[]={"abc","cde","fgh",NULL};//这里添加一个NULL,表示不指向任何地址,值为0
print_char(test);
cin.get();
}
void print_char(char* array[])
{
while(*array!=NULL)
{
cout }
}
相关推荐
-
C++中引用&与取地址&的区别分析
C++中的引用&与取址&是很多初学者经常容易出错的地方,今天本文就对此加以分析总结,供大家参考之用. 具体而言,一个是用来传值的 一个是用来获取首地址的 &(引用)==>出现在变量声明语句中位于变量左边时,表示声明的是引用. 例如: int &rf; // 声明一个int型的引用rf &(取地址运算符)==>在给变量赋初值时出现在等号右边或在执行语句中作为一元运算符出现时表示取对象的地址. 在C++中,既有引用又有取地址,好多人对引用和取地址不
-
提高C程序效率的10种有效方法
任何代码的美丽不仅在于找到一个给定的问题的解决方案,但在它的简单性,有效性,紧凑性和效率(内存).设计的代码比实际执行更难 .因此,每一个程序员当用C语言开发时,都应该保持这些基本的东西在头脑中. 本文向你介绍规范你的C代码的10种方法. 1.避免不必要的函数调用 考虑下面的2个函数: 复制代码 代码如下: void str_print( char *str ) { int i; for ( i = 0; i < strlen ( str ); i++){ printf("%c"
-
提高C++程序运行效率的10个简单方法
本文以C/C++程序为例讲述了程序运行效率的10个简单方法,分享给大家供大家参考之用.具体分析如下: 对于每一个程序员来说,程序的运行效率都是一个值得重视,并为之付出努力的问题.但是程序性能的优化也是一门复杂的学问,需要很多的知识,然而并不是每个程序员都具备这样的知识,而且论述如何优化程序提高程序运行效率的书籍也很少.但是这并不等于我们可以忽略程序的运行效率,下面就介绍一下本人积累的一些简单实用的提高程序运行效率的方法,希望对大家有所帮助. 一.尽量减少值传递,多用引用来传递参数. 至于其中的原
-
C++操作MySQL大量数据插入效率低下的解决方法
通常来说C++操作MySQL的时候,往Mysql中插入10000条简单数据,速度非常缓慢,居然要5分钟左右, 而打开事务的话,一秒不到就搞定了! 具体实现代码如下: #include <iostream> #include <winsock2.h> #include <string> #include "mysql.h" #pragma comment(lib, "libmysql.lib"); using namespace s
-
C++直接初始化与复制初始化的区别深入解析
C++中直接初始化与复制初始化是很多初学者容易混淆的概念,本文就以实例形式讲述二者之间的区别.供大家参考之用.具体分析如下: 一.Primer中的说法 首先我们现来看看经典是怎么说的: "当用于类类型对象时,初始化的复制形式和直接形式有所不同:直接初始化直接调用与实参匹配的构造函数,复制初始化总是调用复制构造函数.复制初始化首先使用指定构造函数创建一个临时对象,然后用复制构造函数将那个临时对象复制到正在创建的对象" 还有一段这样说: "通常直接初始化和复制初始化仅在低级别优化
-
C++指向函数的指针用法详解
本文以实例形式展示了C++指向函数的指针用法,是深入学习C++所必须掌握的关键知识点.分享给大家供大家参考之用.具体方法如下: 函数指针 现来看看以下声明语句,看看其含义: float (*h(int, void (*)(int)))(int); 以下是一个变量指针的定义语句: float* pf; 以下是一个普通函数的声明语句: float f(); 请看以下声明语句: float* g(); 因为()的优先级高于*, 所以相当于: float* (g()); g是一个函数, 返回值为floa
-
基于C++执行内存memcpy效率测试的分析
在进行memcpy操作时,虽然是内存操作,但是仍然是耗一点点CPU的,今天测试了一下单线程中执行memcpy的效率,这个结果对于配置TCP epoll中的work thread 数量有指导意义.如下基于8K的内存快执行memcpy, 1个线程大约1S能够拷贝500M,如果服务器带宽或网卡到上限是1G,那么网络io的work thread 开2个即可,考虑到消息的解析损耗,3个线程足以抗住硬件的最高负载. 在我到测试机器上到测试结果是: Intel(R) Xeon(R) CPU
-
C++循环链表之约瑟夫环的实现方法
本文实例形式展示了C++实现循环链表中约瑟夫环的方法,分享给大家供大家参考之用.具体方法如下: 主要功能代码如下: #include <iostream> using namespace std; typedef struct student { int data; struct student* next; }node,*LinkList; //约瑟夫环 void printfList(LinkList head){ LinkList p=head; if (head!=NULL) { do
-
C/C++常用函数易错点分析
本文简单分析了C/C++中常用函数的易错点,包括memset.sizeof.getchar等函数.分享给大家供大家参考之用.具体分析如下: 1.memset #include <string.h> void* memset( void* buffer, int ch, size_t count ); 将内存中buffer的前count个字节的内容全部设置为ch指定的ASCII值.经常用来初始化数组.复制时以字节为单位,如果buffer是int long,或者其他类型的指针时,需要注意不一定为数
-
深入分析C++中声明与定义的区别
首先谈下声明与定义的区别. 声明是将一个名称引入程序.定义提供了一个实体在程序中的唯一描述.声明和定义有时是同时存在的. 如int a; extern int b=1; 只有当extern中不存在初始化式是才是声明.其他情况既是定义也是声明. 但是在下列情况下,声明仅仅是声明: 1:仅仅提供函数原型.如void func(int,int); 2: extern int a; 3:class A: 4:typedef声明 5:在类中定义的静态数据成员的声明 如: class A {
-
C++ 多重继承和虚拟继承对象模型、效率分析
一.多态 C++多态通过继承和动态绑定实现.继承是一种代码或者功能的传承共享,从语言的角度它是外在的.形式上的,极易理解.而动态绑定则是从语言的底层实现保证了多态的发生--在运行期根据基类指针或者引用指向的真实对象类型确定调用的虚函数功能!通过带有虚函数的单一继承我们可以清楚的理解继承的概念.对象模型的分布机制以及动态绑定的发生,即可以完全彻底地理解多态的思想.为了支持多态,语言实现必须在时间和空间上付出额外的代价(毕竟没有免费的晚餐,更何况编译器是毫无感情): 1.类实现时增加了virtual
随机推荐
- 改良程序的11技巧分享
- 用Meta标签控制360浏览器默认极速模式打开自己的网站
- extjs 学习笔记(三) 最基本的grid
- 谈谈Java利用原始HttpURLConnection发送POST数据
- HttpsURLConnection上传文件流(实例讲解)
- CreateOutputCachedItemKey 缓存key的创建
- 深入解析fsockopen与pfsockopen的区别
- 使用Python的判断语句模拟三目运算
- JavaScript初学者建议:不要去管浏览器兼容
- php pdo操作数据库示例
- asp实现后台添加wma视频文件前台显示
- 提示缺少“S2CSplash.DLL"的解决方法,下载此文件放到才程序目录即可
- jQuery的观察者模式详解
- Jquery实战_读书笔记1—选择jQuery
- Dubbo在Spring和Spring Boot中的使用详解
- asp.net中Response.Redirect与Server.Transfer的区别分析
- nodejs实用示例 缩址还原
- Android Studio导入so文件到项目中的实例详解
- Android开发之利用Activity实现Dialog对话框
- 基于Token的身份验证之JWT基础教程