#define #define INT32 int #define INT8 char #define CHAR char #define SSHORT signed short #define INT16 signed short #define _ASSERT_STR(z) _ASSERT_TMP(z) #define _ASSERT_TMP(z) #z //变成字符串 C语言中的__FILE__用以指示本行语句所在源文件的文件名 C语言中的__LINE__用以指示本行语句在源文件中的位置信息 __func__,它指示所在的函数 #line来重新设定__LINE__的值 typedef ssize_t (*zmss_readlinkP)(const char*, char*, size_t); ssize_t是类型 typedef QTSS_Error (*QTSS_CallbackProcPtr)(...);//声明函数指针类型 typedef QTSS_Error (*QTSS_CallbackProcPtr)(...); //声明函数指针类型,它的类型变量可以为函数名即函数地址,任意参数QTSS_Error返回类型。 Strcpy #include<iostream> #include<stdlib.h> using namespace std; void main() { int a = 3; int b = 4; int c = (b=a); cout << "c:" << c<<endl;//返回赋的值3 system("pause"); } char* strcpy(char* des,const char* source) { char* r=des; assert((des != NULL) && (source != NULL)); while((*des++ = *source++)!=‘\0‘); return r; } /*while((*des++=*source++));的解释:赋值表达式返回左操作数,所以在赋值NULL后,循环停止*/ while(*des++=*source++);等价于 while(1) { *des = *source; if(*source == ‘\0‘)break; source++; des++; } strcat拼接函数 //将源字符串加const,表明其为输入参数 char* strcat(char* strDest , const char*s trSrc) { //后文return address,故不能放在assert断言之后声明address char* address=strDest; assert( (strDest!=NULL)&&(strSrc!=NULL) );//对源地址和目的地址加非0断言 while(*strDest)//是while(*strDest!=’\0’)的简化形式 { //若使用while(*strDest++),则会出错,因为循环结束后strDest还会执行一次++, //那么strDest将指向‘\0‘的下一个位置。/所以要在循环体内++;因为要使*strDest最后指 //向该字符串的结束标志’\0’。 strDest++; } while(*strDest++=*strSrc++) { NULL;//该循环条件内可以用++, }//此处可以加语句*strDest=’\0’;无必要 return address;//为了实现链式操作,将目的地址返回 } char *mystrcat(char *dst,const char *src) //用自己的方式实现strcat函数功能 { char *p=dst; //下面的操作会改变目的指针指向,先定义一个指针记录dst while(*dst!=‘\0‘)dst++; while(*src!=‘\0‘)*dst++=*src++; *dst=‘\0‘; return p; //dst现在指向拼接后的最后一位字符,在这里返回dst,会出现错误 } void Delete() { if(Ptr != NULL) delete [] Ptr; Ptr = NULL; Len = 0; } char *Ptr; char lastSourceChar = Ptr[Len -1]; string strReadBuf("");
时间: 2024-11-05 18:38:43