c/c++的知识点收集
来源:互联网 发布:部落冲突宝石升级数据 编辑:程序博客网 时间:2024/05/04 05:09
1.动态获得内存的代码:
void GetMemory(char **p, int num)
{
*p = (char *)malloc(sizeof(char) * num);
}
char* GetMemory2(int num)
{
char* p = (char *)malloc(sizeof(char) * num);
return p;
}
------------------------------------------
错误的代码:
void GetMemory3(char *p, int num)
{
p = (char *)malloc(sizeof(char) * num);
}///////////////错误在哪里,我就不说,自己去查.
2.strcpy()的代码:
char* strcpy(char* strDest,const char* strSrc)
{
if(strDest==NULL || strSrc==NULL) return NULL;
char* pStr=strDest;
while((*strDest++=*strSrc++)!='/0)
NULL;
return pStr;
}
3.memcpy()的代码:
void* memcpy(char* strDest,const char* strSrc,size_t size)
{
if(strDest==NULL||strSrc==NULL) return NULL;
if(size <=0) return NULL;
char* pStr=strDest;
while(size-->0)
*strDest++=*strSrc++;
return pStr;
}
4.关于sizeof操作符:
char 1
short 2
short int 2
signed short 2
unsigned short 2
int 4
long int 4
signed int 4
unsigned int(unsigned) 4
long 4
unsigned long 4
float 4
double 8
void* 4 (所有指针类型长度都一样)(char*,int*,float*,double*)
enum 4
是在32bit系统中..
5.函数的参数传递
值传递,指针传递,引用传递.
值传递:由于Func1 函数体内的x 是外部变量n 的一份拷贝, 改变x 的值不会影响n, 所以n 的值仍然是0. 示例:
void Func1(int x)
{
x = x + 10;
}
…
int n = 0;
Func1(n);
cout < < "n = " < < n < < endl; // n = 0
指针传递:由于Func2 函数体内的x 是指向外部变量n 的指针,改变该指针的内容将导致n 的值改变,所以n 的值成为10.示例:
void Func2(int *x)
{
(* x) = (* x) + 10;
}
…
int n = 0;
Func2(&n);
cout < < "n = " < < n < < endl; // n = 10
引用传递:由于Func3 函数体内的x 是外部变量n 的引用,x和n是同一个东西,改变x 等于改变n,所以n 的值成为10.示例:
void Func3(int &x)
{
x = x + 10;
}
…
int n = 0;
Func3(n);
cout < < "n = " < < n < < endl; // n = 10
6.内存分配方式:
静态存储区域分配:全局变量,static变量;内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在;
栈分配:函数内局部变量;栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限.
堆分配:new和malloc动态分配;用malloc和new申请任意多的内存,程序员负责何时用free和delete释放内存
- c/c++的知识点收集
- 收集的Objective-C runtime博客及知识点总结
- C语言的知识点
- c语言的知识点
- 高质量C编程10-常用知识点收集
- c知识点
- C 知识点
- FFT c代码的收集
- 应该知道的c知识点
- C语言的一些知识点
- C语言最重要的知识点
- C语言最重要的知识点
- C语言的基础知识点
- Objective-C的重要知识点
- 从零开始的C语言知识点
- C的几点易错点,知识点梳理
- C&C++的常见知识点
- 【C++】C++琐碎的知识点
- EJB的分类
- Run terminal script in Finder
- Android的图形系统研究资料清单
- fetion(飞信)http协议-登录【转贴】
- my new webblog
- c/c++的知识点收集
- 有关csdn资源
- 静态类和静态成员
- mysqldump及其命令用法
- 如何处理Oracle中TEMP表空间满的问题(含查询表空间SQL)
- MyEclipse插件介绍与下载
- 「案件見積もり」フェーズの注意点 AND 「案件見積もり」フェーズでの管理手法 AND 「要件定義、ヒアリング」と「基本設計」フェーズの注意点
- linux 下安装qq
- '/0'和"/0"的区别