![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C/C++
文章平均质量分 51
浪迹天崖_1
这个作者很懒,什么都没留下…
展开
-
网络编程
网络编程1、API函数封装//wrap.h#ifndef __WRAP_H_#define __WRAP_H_#include <stdlib.h>#include <stdio.h>#include <unistd.h>#include <errno.h>#include <string.h>#include <sys/socket.h>#include <arpa/inet.h>#include原创 2021-04-29 16:52:10 · 205 阅读 · 0 评论 -
学生信息管理系统
学生信息管理系统基于动态链表的增、删、改、查和文件的存储,实现对学生信息(姓名、性别、年龄、学号、电话、语文、数学、英语)的管理存储学生信息的文件:#define FILEPATH "information.txt"学生基本信息结构体//学生基本信息信息struct Student { int data; char name[10]; //姓名 char sex[10]; //性别 int age; //年龄 int id; //学号 int tel;原创 2021-04-29 15:24:41 · 246 阅读 · 0 评论 -
文件打包解包
基于文件IO的文件打包和解包通过命令行传参的方式,获取文件的路径和基本信息遍历目录的结构void findfile(char *Path);int main(int argc, char **argv){ struct _stat buf; int result; char Path[256] = { 0 }; //cout << "文件名:" << endl; for (size_t i = 1; i < argc; i++) { cout &原创 2021-04-29 15:21:55 · 502 阅读 · 0 评论 -
Mysql_API
MySql数据库API编程初始化初始化函数原型:MYSQL *mysql_init(MYSQL *mysql)处理错误码的函数:unsigned int mysql_errno(MYSQL *mysql)#include <stdio.h>#include <stdlib.h>#include "mysql.h"int main(){ //MYSQL *mysql_init(MYSQL *mysql) MYSQL *mysql = mysql_init(NUL原创 2021-04-29 15:17:16 · 483 阅读 · 0 评论 -
多个对象构造和析构
初始化列表构造函数和其他函数不同,除了有名字,参数列表,函数体之外还有初始化列表**注意:**初始化成员列表(参数列表)只能在构造函数使用。形式:`Student(string name,int age):m_Name(name),m_Age(age){ }class Student{public: //一般初始化方式 Student(string name,int age) { m_Name=name; m_Age=age; }原创 2021-04-21 13:10:10 · 156 阅读 · 0 评论 -
动态内存分配
动态内存分配当我们创建数组的时候,总是需要提前预定数组的长度,然后编译器分配预定长度的数组空间,在使用数组的时,会有这样的问题,数组也许空间太大了,浪费空间,也许空间不足,所以对于数组来讲,如果能根据需要来分配空间大小再好不过。为了解决这个普遍的编程问题,在运行中可以创建和销毁对象是最基本的要求。当然c早就提供了动态内存分配,函数malloc和free可以在运行时从堆中分配存储单元。1、malloc — 申请动态内存malloc(sizeof(num))向系统申请sizeof(num)字节的动态内存原创 2021-04-21 13:05:11 · 184 阅读 · 0 评论 -
C++初识
简单的C++程序#include <iostream>using namespace std;int main(){ cout<<"Hello World"<<endl; system("pause"); return EXIT_SUCCESS;}分析:#include <iostream>; 预编译指令,引入头文件iostream。using namespace std; 使用标准命名空间。cout <&l原创 2021-04-21 13:02:57 · 278 阅读 · 1 评论 -
C语言细节
typora-root-url: Image1、会输出"hello-std-out"#include <stdio.h>#include <unistd.h>void test(){ fprintf(stdout,"hello-std-out"); fprintf(stderr,"hello-std-err\n"); sleep(5)}分析:stdout和stderr是不同的设备描述符。stdout是块设备,stderr则不是。对于块设备.原创 2021-04-21 13:01:45 · 132 阅读 · 0 评论 -
字符串的操作函数
1、自写求字符串有效长度函数strlen(str)-----myStrlen(str);int myStrlen(char *str){ int len=0; char *p=str; while(*p++!='\0') { len++; } return len;}int main(){ char str[]="Hello"; printf("%d\n",strlen(str)); printf("%d原创 2021-04-21 12:56:22 · 80 阅读 · 0 评论 -
指针数组--数组指针
1、指针数组指针数组:[ ]优先级高,先与p结合成为一个数组,其次数组里面的元素都是指针int *p[10]; //指针数组,含有10个指针元素 //也就是说每一个元素都是int类型的指针。void test01(){ char *str1="aaaa"; char *str2="bbbb"; char *str3="cccc"; char *str4="dddd"; char *p[]={str1,str2,str3,str4}; //等价于 //原创 2021-04-21 12:54:28 · 145 阅读 · 0 评论 -
数组
1、一维数组<1> 一维数组名在以下两种情况下数组名不是指向数组首元素的指针1:sizeof(数组名) //数组所占字节数 sizeof(指针) //指针类型所占字节数:4字节(任意类型指针)2:&(数组名) //得到指向数组的指针(数组指针),步长为数组大小 printf("%d\n",&数组名); printf("%d\n",&数组名+1); //偏移一个数组数组名是一个指针常量----指针的指原创 2021-04-21 12:53:02 · 67 阅读 · 0 评论 -
两数交换原则
1、三杯水原则int temp=arr[i];arr[i]=arr[min];arr[min]=temp;2、按位异或原则arr[i]=arr[i]^arr[min]; arr[min]=arr[i]^arr[min];arr[i]=arr[i]^arr[min];3、加减原则arr[i]=arr[i]+arr[min];arr[min]=arr[i]-arr[min]; arr[i]=arr[i]-arr[min];...原创 2021-04-21 12:50:47 · 58 阅读 · 0 评论 -
结构体
1、结构体申明–定义–初始化(1) struct Person{ char name[64]; int age;};typedef struct Persin myPerson= { "Tom", 18 };;(2)typedef struct Person{ char name[64]; int age;}myPerson; //无typedef关键字--myPerson为结构体别名void test01(){ struct Person p =原创 2021-04-21 12:47:41 · 52 阅读 · 0 评论 -
排序算法
1、冒泡排序# include <stdio.h> # include <stdlib.h> void Swap(int *a,int *b){ int temp=*a; *a=*b; *b=temp;}void Bubble_Sort(int *arr,int len){ int i,j; for(i=0;i<len-1;i++) { for(j=0;j<len-i-1;j++) { if(arr[j]>arr[j+1]原创 2021-04-21 12:39:00 · 47 阅读 · 0 评论 -
void、void 的使用
void的使用1、对函数返回值的限定—函数无返回值void test(int a){ int num+=a;}2、void * 限定函数的返回值为任意类型的指针void * test(){ int a=5; int *p=&a; return p;}3、对函数参数的限定—函数无参数int test(void){ return 5+3;}4、void * 限定函数参数为任意类型的指针void test(void * p){ int *a=p;原创 2020-09-14 21:49:57 · 424 阅读 · 0 评论 -
typedef的使用
typedef的使用1、为基本数据类型定义新的类型名typedef double MYDBL;2、为自定义类型(结构体、共用体和枚举)起别名 - 简化类型名关键字typedef struct Person{ char name[64]; int age;}myPerson;void test01(){ struct Person p = { "aaa", 10 }; myPerson p2 = { "bbb", 20 }; //起别名,简化}3、区分数据类型vo原创 2020-09-14 21:22:50 · 225 阅读 · 0 评论 -
位运算
位运算1、按位取反 ~(你真我假)void test01(){ int num = 2; // 010 取反 // 101 源码 //计算机用补码方式存数据 110 + 1 = 111 printf("~num = %d\n", ~num); // -3}2、 按位与&(全真为真,有假为假)一个数与1按位与(&)结果为1,则此数为奇数,否则为偶数01010101 00000001 &00000001 奇数0101010原创 2020-09-14 20:54:53 · 79 阅读 · 0 评论 -
控制语句及其用途
控制语句及其用途表现形式用处if()… 或 if()… else …条件语句for()…循环语句while()…循环语句do … while()循环语句continue结束本次循环语句break终止执行switch或循环体switch多分支选择语句return从函数返回语句goto转向语句1、if()… else …语句if(a>b) max=a;else max=b; x>y 是原创 2020-09-14 19:39:18 · 194 阅读 · 0 评论 -
C语言概述
1、计算机结构组成 输入:向计算机输入数据和信息(鼠标、键盘),是用户和计算机系统之间进行信息交换的主要装置之一 中央处理器(CPU)的主要模块:运算器(核心)、控制器(负责程序的流程管理)、存储器(内、外) 输出:用于接收计算机数据的输出显示、打印、声音、控制外围设备操作(显卡、声卡) (1) 内存储器:是CPU与外部设备交换数据的直接场所,内存储器速度次于CPU速度,但是也算是高速存储设备,其包括RAM(我们常说的内存),显存,及一些高速缓存。 (2) 外存储器:是外部存储设备,速原创 2020-09-14 19:35:04 · 158 阅读 · 1 评论 -
二级指针做函数参数的输入输出特性
二级指针做函数参数的输入、输出特性1、输入特性主调函数分配内存,被调函数使用内存<1>内存分配在堆区void printArray(int **pArray,int len ){ for(int i=0;i<len;i++) { printf("%d\n",*pArray[i]); }}void test01(){ //堆区 int **pArray=malloc(sizeof(int *)*5);原创 2020-09-14 19:25:31 · 180 阅读 · 0 评论 -
const修饰指针的三种效果
const修饰指针的三种效果1、const int *p const向右修饰 const 修饰 *p --------> *p不可被修改 p可被修改2、int * const p const 修饰 p --------> p不可被修改 *p可被修改3、const int * const p const 修饰 *p和p --------> p不可被修改 *p原创 2020-09-14 17:15:15 · 121 阅读 · 0 评论