- 博客(23)
- 收藏
- 关注
原创 网络编程
网络编程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
241
原创 学生信息管理系统
学生信息管理系统基于动态链表的增、删、改、查和文件的存储,实现对学生信息(姓名、性别、年龄、学号、电话、语文、数学、英语)的管理存储学生信息的文件:#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
275
原创 文件打包解包
基于文件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
548
原创 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
536
原创 多个对象构造和析构
初始化列表构造函数和其他函数不同,除了有名字,参数列表,函数体之外还有初始化列表**注意:**初始化成员列表(参数列表)只能在构造函数使用。形式:`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
190
原创 动态内存分配
动态内存分配当我们创建数组的时候,总是需要提前预定数组的长度,然后编译器分配预定长度的数组空间,在使用数组的时,会有这样的问题,数组也许空间太大了,浪费空间,也许空间不足,所以对于数组来讲,如果能根据需要来分配空间大小再好不过。为了解决这个普遍的编程问题,在运行中可以创建和销毁对象是最基本的要求。当然c早就提供了动态内存分配,函数malloc和free可以在运行时从堆中分配存储单元。1、malloc — 申请动态内存malloc(sizeof(num))向系统申请sizeof(num)字节的动态内存
2021-04-21 13:05:11
211
原创 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
351
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
154
原创 字符串的操作函数
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
99
原创 指针数组--数组指针
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
177
原创 数组
1、一维数组<1> 一维数组名在以下两种情况下数组名不是指向数组首元素的指针1:sizeof(数组名) //数组所占字节数 sizeof(指针) //指针类型所占字节数:4字节(任意类型指针)2:&(数组名) //得到指向数组的指针(数组指针),步长为数组大小 printf("%d\n",&数组名); printf("%d\n",&数组名+1); //偏移一个数组数组名是一个指针常量----指针的指
2021-04-21 12:53:02
86
原创 两数交换原则
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
76
原创 结构体
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
75
原创 排序算法
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
68
原创 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
457
原创 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
280
原创 位运算
位运算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
99
原创 ubuntu14.0安装arm-linux-gcc交叉编译环境
ubuntu14.0安装arm-linux-gcc交叉编译环境1、下载文件:安装包:arm-linux-gcc-4.5.1-v6-vfp-20120301.tgz下载地址 http://pan.baidu.com/s/1pJwQ6Sj2、开始安装(建议大家新建一个文件夹),然后将文件复制到新建的文件夹中到所建文件夹目录自动安装最新版本使用如下命令进行arm-linux-g++的安装: sudo apt-get install g++-arm-linux-gnueabihf如果要卸载时
2020-09-14 19:51:56
514
原创 Ubuntu下gcc安装及使用
Ubuntu下gcc安装及使用sudo apt update报错sudo apt update命中:1 http://packages.microsoft.com/repos/vscode stable InRelease命中:2 http://ppa.launchpad.net/elementary-os/stable/ubuntu bionic InRelease获取:3 http://packages.elementary.io/appcenter bionic InRelease [5,
2020-09-14 19:44:14
12426
原创 控制语句及其用途
控制语句及其用途表现形式用处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
210
原创 C语言概述
1、计算机结构组成 输入:向计算机输入数据和信息(鼠标、键盘),是用户和计算机系统之间进行信息交换的主要装置之一 中央处理器(CPU)的主要模块:运算器(核心)、控制器(负责程序的流程管理)、存储器(内、外) 输出:用于接收计算机数据的输出显示、打印、声音、控制外围设备操作(显卡、声卡) (1) 内存储器:是CPU与外部设备交换数据的直接场所,内存储器速度次于CPU速度,但是也算是高速存储设备,其包括RAM(我们常说的内存),显存,及一些高速缓存。 (2) 外存储器:是外部存储设备,速
2020-09-14 19:35:04
231
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
207
原创 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
145
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人