C/C++
文章平均质量分 84
shoren80
这个作者很懒,什么都没留下…
展开
-
c++友元函数和友元类
采用类的机制后实现了数据的隐藏与封装,类的数据成员一般定义为私有成员,成员函数一般定义为公有的,依此提供类与外界间的通信接口。但是,有时需要定义一些函数,这些函数不是类的一部分,但又需要频繁地访问类的数据成员,这时可以将这些函数定义为该函数的友元函数。除了友元函数外,还有友元类,两者统称为友元。友元的作用是提高了程序的运行效率(即减少了类型检查和安全性检查等都需要时间开销),但它破坏了类的封装性和转载 2011-10-26 13:34:30 · 629 阅读 · 0 评论 -
sizeof && strlen, 数组 && 指针
贴代码吧,最明显了: #include #include int main() { char s[] = "hello"; char *p = s; printf("sizeof(s)=%d,sizeof(p)=%d\n",sizeof(s),sizeof(p)); //6,4 printf("strlen原创 2012-10-30 10:27:13 · 613 阅读 · 0 评论 -
socket阻塞与非阻塞,同步与异步的区别
1、概念理解 在进行网络编程时,我们常常见到同步(Sync)/异步(Async),阻塞(Block)/非阻塞(Unblock)四种调用方式: 同步 所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。 异步 异步的概念和同步相对。当一个异步过程调用发出后,调用者不能立刻得到结果。实际处理这个调用的部件在完成后,通过状态、通知转载 2013-01-04 15:20:06 · 979 阅读 · 0 评论 -
C++ 变量和函数的声明和定义
有一部分C++程序员对于多个源文件一起编译链接时,变量,函数或者类声明和实现到底如何定义模糊不清,现在分类澄清一下。 变量 (variable) 在C++中,变量声明(declaration)只有在使用extern关键字时才成立,其他情况下都是定义(definition),而在使用extern的同时给变量赋初始值,则声明变为定义,extern关键字也将被编译器转载 2013-02-05 17:18:02 · 812 阅读 · 0 评论 -
C语言查遗补缺——关于自增运算符的有趣的例子
只是找了一些例子并运行,没有总结出个规律来,想不清楚内部机制,大家一起给总结一下吧~ 首先是跟宏定义结合,这是笔试题中可能遇到的题目,然后展开讨论,关于后自增在逻辑运算符和加法运算符中的区别,但是没有总结出规律,也不明白本质上怎么破。。欢迎大家留言给予指导~ #define BAND1(x) (((x) >= 5)&&((x) <= 10) ? (x) : 0) #def原创 2013-03-29 09:06:34 · 1259 阅读 · 0 评论 -
认识指针
指针的定义是一种保存变量地址的变量。这篇文章主要是清楚“指针保存变量地址”这个认知。 首先认识两个符号:*是间接寻址或间接引用运算符。 &用来取一个对象的地址。 常见指针用法如下: int *p; int x = 1; p = &x; printf("p = %x, &x = %x原创 2013-01-18 15:39:05 · 833 阅读 · 0 评论 -
C语言的那些秘密之——函数返回局部变量
一般的来说,函数是可以返回局部变量的。 局部变量的作用域只在函数内部,在函数返回后,局部变量的内存已经释放了。因此,如果函数返回的是局部变量的值,不涉及地址,程序不会出错。但是如果返回的是局部变量的地址(指针)的话,程序运行后会出错。因为函数只是把指针复制后返回了,但是指针指向的内容已经被释放了,这样指针指向的内容就是不可预料的内容,调用就会出错。准确的来说,函数不能通过返回指向栈内存的指针(注意转载 2013-04-06 11:01:07 · 677 阅读 · 0 评论 -
C语言查漏补缺——关键字篇
Register关键字 Register 声明寄存器变量【尽可能将变量存在CPU内部寄存器,不是绝对哦】 CPU读取数据:内存——寄存器——CPU 虽然寄存器的速度非常快,但也有限制:register变量必须是能被CPU寄存器接受的类型,意味着register变量必须是一个单个的值,并且其长度应小于或等于整型的长度。而且register变量可能不存放在内存中,所以不能用取址运算符&来获取原创 2013-03-26 16:25:38 · 1045 阅读 · 0 评论