![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C&C++
mcgrady_tracy
这个作者很懒,什么都没留下…
展开
-
C++引用
一. C++中的引用引用(reference)实际上是为对象定义了一个别名,主要用作函数的形参。引用通过在变量名前加上"&"符号来定义。例如:int ival = 1024;int &refVal = ival; // ok: refVal refers to ivalint &refVal2; // error: a reference must be initia原创 2016-11-30 17:16:38 · 408 阅读 · 0 评论 -
linux系统库函数之strlen
370 #ifndef __HAVE_ARCH_STRLEN371 /**372 * strlen - Find the length of a string373 * @s: The string to be sized374 */375 size_t strlen(const char *s)376 {377 const char *sc;原创 2012-03-20 14:47:31 · 4425 阅读 · 0 评论 -
c strtok函数用法
strtok函数用于分割字符串,原型如下:char *strtok(char *str, const char *delim);str为指向欲分割的字符串,delime为分隔符,实例如下:#include #include int main(void){ char s[] = "aaa bbb ccc ddd"; char c[] = " "原创 2013-07-26 15:59:20 · 12862 阅读 · 1 评论 -
c文件编程
文件流文件流有两种方式:一是文本流,此时数据写入为字符,这些字符组织为数据行,每一行以换行符结束,对于像int或double这类数据需要先转换成字符,才能写入文件中。二是二进制流,二进制流就是写入实际的值,例如double类型的值在文件中占8个字节。不管是文本流还是二进制流,在文件中都是一连串的自己组成,关键在于我们怎么去解释这些数据,例如字符'a',在文件中存储的是其ASCII码值97,原创 2013-07-05 10:21:00 · 1389 阅读 · 0 评论 -
构造函数初始化列表
构造函数初始化列表构造函数初始化列表示例如下:Sales_item::Sales_item(const string &book) : isbn(book), units_sold(0), revenue(0.0) { }构造函数初始化列表以冒号开始,以逗号分隔数据成员,每个数据成员后面跟上其初始值,上面的构造函数将isbn成员初始化为book形参的值,将units_原创 2013-06-25 14:41:10 · 2673 阅读 · 0 评论 -
默认构造函数
默认构造函数在看默认构造函数前先来看看默认实参,同普通函数一样,构造函数也可以提供默认实参。例如:class Sales_item {public: // default argument for book is the empty string Sales_item(const std::string &book = "") :原创 2013-06-25 15:22:55 · 1679 阅读 · 0 评论 -
函数默认实参
函数默认实参默认实参是通过给函数形参列表中的形参提供明确的初始值来指定的。函数可以具有一个或多个默认实参,但是如果有一个形参具有默认实参,那么它后面所有的形参都必须具有默认实参。例如:int f(int a = 0, int b = 0, int c = 0); // okint f(int a = 0, int b, int c); // erro原创 2013-06-24 17:00:25 · 2008 阅读 · 0 评论 -
this指针
一、this指针每个成员函数(除static成员函数外)都有一个隐含的形参this指针,this指针指向所调用的对象。例如函数add_year可以这样写:void Date::add_year(int n){ this->y += n;}在成员函数中,不必显示的使用this指针来访问对象所属的成员。二、const成员函数理解了this指针之后,原创 2013-06-22 15:56:40 · 761 阅读 · 0 评论 -
string类
string类要使用string类,必须包含相关头文件,例如:#include 一、string对象定义和初始化常用构造函数有:string s1; /* 默认构造函数,s1为空串 */string s2(s1); /* 将s2初始化为s1的一个副本 */string s3("Value");原创 2013-06-20 16:54:26 · 701 阅读 · 0 评论 -
C++ inline函数
C++ inline函数inline函数一般用于比较小的,频繁调用的函数,这样可以减少函数调用带来的开销。只需要在函数返回类型前加上关键字inline,即可将函数指定为inline函数。inline有点类似于宏定义,但是它和宏定义不同的是,宏定义只是简单的文本替换,是在预编译阶段进行的。而inline的引入正是为了取消这种复杂的宏定义的。同其它函数不同的是,最好将inl原创 2013-06-19 17:47:31 · 745 阅读 · 0 评论 -
C++基本数据类型
原创 2013-06-17 22:52:26 · 639 阅读 · 0 评论 -
C语言学习之常量
1. 整型常量. 像123这一类型常量如无特别说明都是int类型常量。. long型常量要以l或L结尾,比如123456789L。. 无符号常量要以u或U结尾。. 整型常量除了用十进制表示外,还可以用八进制和十六进制表示,八进制前面加0(零),十六进制前面加0x。2. 字符常量. 字符常量用''表示,比如'y',本质上字符常量是一个整数,在计算机中一般用ASSCII原创 2012-04-28 22:10:36 · 807 阅读 · 0 评论 -
Linux编程错误处理函数
1. perror函数原型如下:void perror(const char *s);perror函数是标准的错误输出函数,如果参数s不为空,首先打印输出字符串s,然后紧跟着输出由全局整型变量errno所对应的错误信息。其中errno变量定义在errno.h中。例如:#include int main(void){ FILE *fp; fp = fopen("test.原创 2013-09-07 16:53:54 · 2407 阅读 · 0 评论 -
c带可变参数的宏
在99版本的ISO C标准中,定义了宏可以接受可变参数,就如同函数一样,例如:#define debug(format, ...) fprintf(stderr, format, __VA_ARGS__)这里的"..."就是可变参数,调用时会替代宏体里的__VA_ARGS__。GCC中很早就支持可变参数的宏了,但是语法同ISO的稍微有点区别,就如同函数一样,它允许给可变参数取上原创 2014-03-28 17:37:55 · 825 阅读 · 0 评论 -
class
class一、类的定义使用关键字class定义一个类,例如:class Date { int d, m, y;public: void init(int dd, int mm, int yy); void add_year(int n); void add_month(int n); vo原创 2013-06-22 11:32:58 · 923 阅读 · 0 评论 -
关于c使用assert
assert宏原型定义在中,原型如下:void assert(scalar expression);其中作用是如果表达式为false,首先向stderr打印一条错误信息,然后使用abort()函数来终止程序的运行,例如:char *strcpy(char *dest, const char *src){ char *tmp = dest; assert(dest != NULL);原创 2016-01-29 13:54:46 · 747 阅读 · 0 评论 -
c printf
原文链接:http://www.cplusplus.com/reference/cstdio/printf/functionprintfint printf ( const char * format, ... );Print formatted data to stdoutWrites the C string pointed by f转载 2016-01-05 16:52:20 · 643 阅读 · 0 评论 -
关于闰年
我们知道,地球绕太阳公转一周为一回归年,而一回归年大约为365.24220日,故此在公历中规定一年为365日(平年),但是4年之后相差0.24220*4=0.9688日,大约为一日,所以又规定,每四年增加一日来抵消这0.9688日(闰年),增加的这一日是放在二月中的,所以二月便有28日(平年)和29日(闰年)这两种情况。但是依照这样的计算来看百年之后将累计成365*100+25=36525日,比实原创 2014-12-02 15:02:23 · 1009 阅读 · 0 评论 -
C语言学习之复合数据类型
一、结构体前面的数组它是同种类型数据的集合,那要是不同种类型的数据怎么办,就需要用到这里的结构体。结构体它的成员可以是基本数据类型,也可以是复合数据类型。1. 结构体类型的定义struct point { int x; int y;};注意结构体类型的定义要以';'结尾。定义了一个结构体类型就相当于新定义了一个数据类型,我们可以使用这个数据类型来定义变量原创 2012-05-06 21:15:43 · 5536 阅读 · 0 评论 -
关于函数按值传递
先看一个例子:#include #include #include void get_memory(char *p){ p = (char *)malloc(16);}int main(void){ char *p = NULL; get_memory(p); printf("%p\n", p); return 0;}p仍然为NULL,why?因为c中函数原创 2014-06-18 17:54:23 · 1000 阅读 · 0 评论 -
C语言学习之指针和数组
前面我们看了如何去使用数组,在这里我们要关心更深层次的问题,它和更前面的指针是何种关系。1. 一维数组和指针前面我们操作数组都是通过数组名加下标的方式,那么这个数组名到底代表什么含义?其实数组名它是一个指针常量,它是一个地址,这个地址是数组的首地址,也就是数组第一个元素的地址。例如:int a[10];你可以去看一下,a, &a, &a[0]它都是同一个值,都是数组的首地址。原创 2012-05-06 00:28:20 · 1707 阅读 · 0 评论 -
c htoi
/* * The C Programming Language, second edition, * by Brian Kernighan and Dennis Ritchie * * Exercise 2-3, page 46 * * Write the function htoi(s), which converts a string of hexadecimal * digi转载 2014-05-29 22:24:17 · 1217 阅读 · 0 评论 -
交换数组的第0行同第3行的值和交换第1行同第2行的值
/* * 写一个函数将二维数组a[4][5]的第0行同第3行交换,第1行同第2行交换,并 * 在main函数中调用该函数,并打印出前后数组的值。 */#include void swap(int *a, int *b){ int temp; temp = *a; *a = *b; *b = temp;}void array_reverse(int (*a)[5]){原创 2014-05-29 23:29:33 · 1625 阅读 · 0 评论 -
c 语言函数指针用法
在c语言中,函数同样有个地址,所以t可以定义一个指针原创 2014-06-08 22:44:41 · 1019 阅读 · 0 评论 -
atoi函数
#include #include #if 0/* atoi: convert s to integer */int atoi(char s[]){ int i, n; n = 0; for (i = 0; s[i] >= '0' && s[i] <= '9'; ++i) n = 10 * n + (s[原创 2014-06-03 22:43:42 · 936 阅读 · 0 评论 -
高效程序员的45个习惯之读书笔记
1. 代码要清晰地表达意图代码可读性很重要。2. 用代码去沟通注释不能代替优秀的代码。3. 增量式编程避免代码复杂化。4. 保持代码简单5. 编写内聚代码6. 告知不要询问原创 2013-05-22 21:21:55 · 819 阅读 · 0 评论 -
C语言学习之操作符和表达式
1. 算术运算符+、-、*、/和%整数除法会舍去小数部分,取余运算只能是整型操作数。2. 关系运算符>、>=、3. 自增和自减++和--注意这里前加和后加、前减和后减的区别。前加和前减表示在使用这个变量之前,先对这个变量进行加减操作,后加和后减表示在使用这个变量之后对这个变量进行加减操作。例如:int a, b, c, d;a = b = 10;原创 2012-04-28 22:51:04 · 726 阅读 · 0 评论 -
C语言学习之模块化编程
我们在编写程序的时候,总不能将所有的程序放在一个源文件中,这样也不便于团队开发和维护。这就需要将程序有序的组织在不同的文件中,头文件中只是程序的接口部分,而在源文件中负责具体实现,如果其他源文件中有需要调用该源文件中的某个函数,只需要包含头文件即可。以欧几里德算法计算两个数的最大公约数为例:gcd函数的实现在euclid.c中/* The gcd() function */int gc原创 2012-05-01 16:20:17 · 1337 阅读 · 0 评论 -
C语言学习之函数
函数用于将一个大任务分割成若干个较小任务,最常见的就是main函数,main函数是整个程序的入口。关于main函数的写法,C标准定义了两种写法:如果不带参数可以这样写int main(void) { /* ... */ }如果带参数一般这样写int main(int argc, char *argv[]) { /* ... */ }argc表示参数的个数,argv为参数原创 2012-05-01 00:26:54 · 949 阅读 · 0 评论 -
C语言学习之控制语句
1. if语句. if语句if (x %2) y += x / 2;如果括号里的表达式为真,执行 y += x / 2;语句。. if else语句if (x % 2 == 0) y += x / 2;else y += (x + 1) / 2;如果if中的表达式为真则执行if后面的语句,否则执行else后面的语句。. if e原创 2012-04-29 00:03:08 · 1022 阅读 · 0 评论 -
C语言学习之变量
1. 整型数据类型. 整型数据类型有char、short int、int和long int,其中short int和long int可以省略int不写。它们都可加上unsigned和signed构成无符号和有符号整数,默认不写是有符号。C标准一般只有限定short不长于int,long不短于int。. 在c99中新增了一个整型数据类型,long long int,当然也可以简写成long原创 2012-04-28 21:44:16 · 752 阅读 · 0 评论 -
linux系统库函数之strcat、strncat
164 #ifndef __HAVE_ARCH_STRCAT165 /**166 * strcat - Append one %NUL-terminated string to another167 * @dest: The string to be appended to168 * @src: The string to append to it169 */170原创 2012-03-20 14:30:41 · 4829 阅读 · 0 评论 -
linux系统库函数之strcmp、strncmp
240 #ifndef __HAVE_ARCH_STRCMP241 /**242 * strcmp - Compare two strings243 * @cs: One string244 * @ct: Another string245 */246 #undef strcmp247 int strcmp(const char *cs, const char原创 2012-03-20 14:44:57 · 12641 阅读 · 0 评论 -
linux系统库函数之strcpy、strncpy
91 #ifndef __HAVE_ARCH_STRCPY 92 /** 93 * strcpy - Copy a %NUL terminated string 94 * @dest: Where to copy the string to 95 * @src: Where to copy the string from 96 */ 97 #undef strcpy原创 2012-03-20 14:04:09 · 14624 阅读 · 0 评论 -
linux系统库函数之memset
531 #ifndef __HAVE_ARCH_MEMSET532 /**533 * memset - Fill a region of memory with the given value534 * @s: Pointer to the start of the area.535 * @c: The byte to fill the area with536 * @原创 2012-03-20 13:51:30 · 1743 阅读 · 0 评论 -
linux系统库函数之memmove
573 #ifndef __HAVE_ARCH_MEMMOVE574 /**575 * memmove - Copy one area of memory to another576 * @dest: Where to copy to577 * @src: Where to copy from578 * @count: The size of the area.57原创 2012-03-20 13:46:20 · 3298 阅读 · 0 评论 -
linux系统库函数之memcpy
551 #ifndef __HAVE_ARCH_MEMCPY552 /**553 * memcpy - Copy one area of memory to another554 * @dest: Where to copy to555 * @src: Where to copy from556 * @count: The size of the area.557原创 2012-03-20 13:38:47 · 12544 阅读 · 0 评论 -
C语言学习之数组
数组是同种类型元素的集合。一、 一维数组1. 一维数组定义int a[10];这样我们便定义了一个数组a,它分配10个int类型空间。2. 数组的初始化我们可以在定义一个数组的同时对它进行初始化操作,例如:int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};甚至我们可以只对数组的部分元素进行初始化操作,例如:i原创 2012-05-03 23:22:24 · 16158 阅读 · 0 评论 -
C语言学习之指针
在谈到指针时,不得不说计算机内存和地址的概念。计算机内存以字节为单位由很多个存储单元组成,每一个存储单元都有一个地址,要访问一个存储单元时,必须要指定这个存储单元的地址。例如:一个1K大小的内存,它的地址范围是从0到1023。那指针又是什么呢?其实指针和普通变量没有什么区别,在32位计算机中,它存储的是一个32位整型数据,但是它和普通变量不同的是,它存放的数据被当作计算机内存的一个存储单元地址原创 2012-05-01 23:22:44 · 2468 阅读 · 0 评论 -
c++调用c函数问题
在c++中,允许同名函数的存在,所以编译器会对函数名重新进行编码。在c++代码中包含c语言头文件时,对函数重新进行编码,会导致与c中的函数原型不一致,出现函数找不到的情况,为了让c语言实现的函数在c++中可以调用,需要在头文件中加上如下代码:#ifdef __cplusplusextern "C" {#endif...#ifdef __cplusplus}#en原创 2013-02-04 17:55:48 · 833 阅读 · 0 评论