c/c++
c和c++的使用
5念since
最重要的事情只有一件,变强!
展开
-
printf原理及实现
#include <stdio.h>#include <stdarg.h>#include <stdlib.h>int my_printf(const char* string,...); int main(){ int i = 10000; my_printf("hello world!\n"); my_printf("int i = %d, j = %d", i, 10); my_printf("char i = %c", 5原创 2021-07-25 20:46:51 · 481 阅读 · 0 评论 -
函数指针的理解
#include <stdio.h>int add(int a, int b);int sub(int a, int b);int (*pfunc)(int a, int b);int add(int a, int b){ return a + b;}int sub(int a, int b){ return a - b;}int main(){ int a=1; int b = 2; int c; pfunc =原创 2021-05-05 20:31:20 · 203 阅读 · 0 评论 -
c语言常用字符串操作函数
1、puts函数说明函数功能这个函数很简单,只有一个参数。s可以是字符指针变量名、字符数组名,或者直接是一个字符串常量。功能是将字符串输出到屏幕。输出时只有遇到 ‘\0’ 也就是字符串结束标志符才会停止。函数原型# include <stdio.h>int puts(const char *s);函数应用# include <stdio.h>#include <stdlib.h>int main(void){ char name[]原创 2021-02-28 20:28:07 · 1137 阅读 · 0 评论 -
文件的读写API函数
#include "stdio.h"#include "stdlib.h"#include "string.h"void main_fputc(){ FILE *fp = NULL; char s[] = "1234567890"; int i = 0; char* filename = "c:/1.txt"; fp = fopen(filename,"r+"); if原创 2017-08-15 09:17:51 · 734 阅读 · 0 评论 -
数组类运算符的重载
包含[] = == != 的重载int& operator[](int i);Array& operator=(Array &p);bool operator==(Array &p);bool operator!=(Array &p);测试程序:#include "iostream"#include "MyArray.h"using namespace std;原创 2017-08-25 17:07:14 · 728 阅读 · 0 评论 -
一句话代码判断是否为闰年
闰年应能被4整除(如2004年是闰年,而2001年不是闰年),但不是所有被4整除的年份都是闰年。在能被100整除的年份中,又同时能被400整除的年份才是闰年上述所得:能被4整除且如果能被100整除则必须被400整除。int isLeapYear(const int yr){ return ( yr%( yr%100?4:400) ?0 : 1);}原创 2017-09-04 18:31:18 · 768 阅读 · 0 评论 -
关键字static
#include void fun(){ static int a=0;a++; printf("%d\n",a); }int main(void){ fun(); fun(); return 0;}原创 2017-01-08 20:17:36 · 236 阅读 · 0 评论 -
c++字符串批量替换
void Replace(){ offindex = s1.find("wbm",0); while( offindex != string::npos ) { cout<<"offindex:"<<offindex<<endl; s1.replace(offindex,3,"WBM"); offindex +=1; offindex = s1.find("wbm",off原创 2017-10-13 21:41:30 · 1827 阅读 · 0 评论 -
指针函数
指针不仅可以作为函数的参数,而且指针还可以作为函数的返回值。当函数的返回值是指针时,则这个函数就是指针函数。 #include<stdio.h>/*指针函数*/int *max(int *p1,int *p2){if(*p1>*p2)return p1;elsereturn p2;} int main(int argc,char *...原创 2018-07-16 21:10:22 · 201 阅读 · 0 评论 -
宏定义实现printf
#运算符将一个带宏的参数转换为字符串常量,它仅允许出现在带参数的宏的替换列表中。 #include <stdio.h> #define PRINT_INT(i) printf(#i"=%d\n",i)#define PRINT_CHAR(i) printf(#i"=%c\n",i) int main(){int temp =100;char...原创 2018-07-18 16:44:38 · 735 阅读 · 0 评论 -
typedef与define的区别
示例一:typedef int* PINT;PINT ptr1,ptr2; #define PINT int*PINT ptr1,ptr2;展开后第一个为int *ptr1,*ptr2;第二个为int *ptr1,ptr2;结论:typedef定义了一种类型,define只是简单的替换...原创 2018-07-19 17:32:03 · 290 阅读 · 0 评论 -
猜数字游戏C语言源码
#include<stdio.h>#include<stdlib.h>#include<time.h>void fun1(int ret,int count)//游戏主体,ret表示产生的随机数,count表示可以猜测的次数 { int i=0; int num=0; printf("please input 0~100 \n...转载 2018-07-19 20:50:59 · 801 阅读 · 0 评论 -
链家网2
输入51 3 1 5 2输出43#include <iostream>#include <malloc.h>#include <stdio.h>using namespace std;int main(){ int n; scanf("%d",&n); int p[10] = {0}; int a[1...原创 2019-04-14 12:13:48 · 207 阅读 · 0 评论 -
类的封装实现
原创 2017-08-22 09:15:40 · 332 阅读 · 0 评论 -
结构体的高级话题
结构体的内存布局和偏移量的关系#include "stdio.h"#include #include "string.h"//一旦结构体定义,内存布局一定typedef struct AdvTea{ char name[64]; int age; int p; char *aliname;}AdvTea;void main(){ AdvTea t1; A原创 2017-08-14 09:47:32 · 278 阅读 · 0 评论 -
结构体中的深拷贝和浅拷贝
浅拷贝只拷贝指针变量的值,不需要分配释放空间。深拷贝则需要分配空间释放空间。使用时需考虑应用场景。浅拷贝#include "stdio.h"#include #include "string.h"typedef struct Tea{ char name[64]; int age; char *aliname;}Tea;void Copyteacher(原创 2017-08-14 09:23:47 · 3444 阅读 · 0 评论 -
字符串的拷贝
对字符串拷贝函数的优化void stringcopy(char* from,char* to){ int i=0; for(i=0;i<strlen(from);i++) { *(to+i) = *(from+i); } to[i]='\0';}void stringcopy2(char* from,char* to){ int i=0; for(;*from原创 2017-07-31 21:06:52 · 270 阅读 · 0 评论 -
多维数组做函数参数的退化
以打印函数为例,一个二维数组的打印过程//多维数组做函数参数的退化void printf2301(int a[3][5]){ int i = 0,j = 0; for(i=0;i<3;i++) { for(j=0;j<5;j++) { printf("%d ",a[i][j]); } printf("\n"); }}void printf230原创 2017-08-08 10:28:43 · 299 阅读 · 0 评论 -
数组指针的三种定义形式
//定义数组指针1void main2201(){//定义一个数组数据类型typedef int (MyArrayType)[5];int i = 0;//用类型定义变量MyArrayType myArray;//定义数组指针变量MyArrayType *pArray; //1{int a;int *p=NULL;p = &a;原创 2017-08-08 10:33:44 · 3161 阅读 · 0 评论 -
结构体基础
#include "stdio.h"#include #include //定义了一种数据类型。固定大小内存块的别名,没有分配内存。struct T1{ char *name; int age; int score;};////////////////////////////////////////////////////////////定义类型的三种方法typedef原创 2017-08-08 16:14:29 · 181 阅读 · 0 评论 -
结构体元素做函数参数和结构指针做函数参数
#include "stdio.h"#include #include //定义类型的三种方法typedef struct T2{char *name;int age;int score;} T2;////////////////////////////////////////////////////////错误模型拷贝完成和结构体完全无原创 2017-08-08 16:48:32 · 464 阅读 · 0 评论 -
结构体做函数
#include "stdio.h"#include #include //定义结构体类型typedef struct T2{ char *name; int age; int score;} T2;//打印void printfage(T2 *Array,int num){ int i = 0; for(i=0;i<num;i++) { printf("Ar原创 2017-08-08 18:45:01 · 293 阅读 · 0 评论 -
配置文件读写案例
cfg.h#ifndef _CFG_OP_H_#define _CFG_OP_H_#ifdef __cplusplusextern "C" {#endif//写配置文件int WriteCfgItem(char *PFilename/*in*/,char *PKey/*in*/,char *PValue/*in*/,char *PValuelen/*in*/);//读配置原创 2017-08-16 14:37:28 · 254 阅读 · 0 评论 -
二级指针做输入的3种模型-1
1.*Arry[]需掌握排序、指针做函数参数排序、内存模型示意图构造所需函数并进行打印#include "stdio.h"#include "string.h"#include "stdlib.h"void printarry(char** s,int *len){ int i=0,count=0; count=*len; for(i=0;i<count;原创 2017-08-03 20:08:30 · 391 阅读 · 0 评论 -
二级指针做输入的3种模型-2
#include "stdio.h"#include "string.h"#include "stdlib.h"void print_array16(char array[][10],int num){ int i=0; for(i=0;i<4;i++) { printf("%s\n",array[i]); }}void sortp(char array[][10],i原创 2017-08-03 20:46:57 · 249 阅读 · 0 评论 -
二级指针做输入的3种模型-3
自己申请内存;先申请内存做指针,然后在指针区域申请内存存值#include "stdio.h"#include "string.h"#include "stdlib.h"char **getmems(int num){ char** p2=NULL; int i=0; p2=(char**)malloc(sizeof(char*) * num); for(i=原创 2017-08-03 22:43:52 · 282 阅读 · 0 评论 -
多级指针的使用
对二级指针进行了扩展引出三级指针到多级指针#include "stdio.h"#include "string.h"#include "stdlib.h"//申请内存int **getmems18(char ***pw,int num){ char** p2=NULL; int i=0; if(pw == NULL) { return -1; } p2=(原创 2017-08-04 14:20:07 · 276 阅读 · 0 评论 -
多级指针避免野指针
必须使用一入口一出口。多出口汇合后,释放资源。#include "stdio.h"#include "string.h"#include "stdlib.h"//释放资源函数void freemyp(char **myp,int count){ int i=0; //如果没有申请内存 if(myp==NULL) { return; } //释放后原创 2017-08-06 17:02:36 · 295 阅读 · 0 评论 -
情人节c++实现的一个小程序
#include#include#include#define stoptimeshort 40#define stoptimelong 100using namespace std;int main(){//////////////////char ch[10];int f[9][36]={ 0,1,1,1,1,1,0,0,0,0,0,0,1,1,0,0,0原创 2017-02-15 10:34:42 · 4287 阅读 · 6 评论