char函数

模拟qsort实现冒泡排序

匿名 (未验证) 提交于 2019-12-02 23:36:01
1.数组指针 数组指针是指针,指针指向数组,其内部保存的是数组的地址,只要是指针,就占4个字节。 比如: int arr[5]; //数组 int *parr1[10]; //指针数组 int (*parr2)[10];//数组指针 int (*parr3[10])[5]; //数组指针数组 解释:命名规则按照操作符的优先级来决定。 2.函数指针和定义 定义:函数指针是指向函数的指针变量。 用途:调用函数和做函数的参数 声明方法:返回值类型(*指针变量名)([形参列表]) 比如: #include <stdio.h> void test() { printf("hehe\n"); } int main() { printf("%p\n", test); printf("%p\n", &test); return 0; } 运行结果: 输出的是两个地址,这两个地址是 test 函数的地址。 那我们的函数的地址要想保存起来,怎么保存? 下面我们看代 码: void test() { printf("hehe\n"); } //下面pfun1和pfun2哪个有能力存放test函数的地址? void (*pfun1)(); void *pfun2(); 首先,能给存储地址,就要求pfun1或者pfun2是指针,那么答案就是:pfun1可以存放。pfun1先和*结合,说明pfun1是指针

C/C++--typedef

匿名 (未验证) 提交于 2019-12-02 23:34:01
第一、四个用途 用途一: 1. 用作同时声明指针型的多个对象: 用途二: 在C中申明结构体对象: struct tagPOINT1 { int x; int y; }; struct tagPOINT1 p1; typedef struct tagPOINT { int x; int y; }POINT; POINT p1; // 这样就比原来的方式少写了一个struct,比较省事,尤其在大量使用的时候 用途三: 解决跨平台问题,比如标准库中的size_t 用途四: 1.为函数类型重命名(typedef有两类自定义类型) 函数名就是一个指针,当调用一个函数时,我们都是直接用函数名调用,或者说通过指针调用。 明白函数名的特点后,看第一个typedef定义的类型 a.类型一,指针 #include <stdio.h> typedef int (*fp_t)(char c); int f0(char c) { printf("f0, c = %c\n", c); return 0;} int f1(char c) { printf("f1, c = %c\n", c); return 1;} int main() { int ret; fp_t fp; fp = f0; ret = fp('a'); fp = f1; ret = fp('x'); return 0; } 类型二,非指针

c++ string.c_str()转const char*的一个坑点

匿名 (未验证) 提交于 2019-12-02 23:34:01
版权声明:咸鱼一只。种树的最好时间是十年前,其次是现在。 https://blog.csdn.net/yxpandjay/article/details/90289095 如果你想以string的内容作为返回值,而又必须返回char*型时 #错误示范 #因为string这个类在函数结束时就调用析构函数了,导致返回的result指向一个已经释放的地址 char* TestFun(){ string test_string = "广东佛山机会开io"; const char* result = test_string.c_str(); return result; } #正确示范 char* TestFun(){ string test_string = "广东佛山机会开io"; const char* result = test_string.c_str(); int tail = 0; while (result[tail] != '\0') { tail++; } char* real_result = (char*)malloc(tail+1); for (int i = 0; i <= tail; i++) { real_result[i] = result[i]; } return real_result; } 文章来源: https://blog.csdn.net

头文件 &lt;string.h&gt; &lt;cstring&gt; &lt;string&gt; 区别

匿名 (未验证) 提交于 2019-12-02 23:32:01
1. #include <string.h> C语言的头文件,包含比如strcpy之类的字符串处理函数。注意C语言里没有string类的概念,不要弄混。 2. #include <string> C++的头文件,包含std::string的定义,属于STL范畴 C++版本的头文件,和C语言版本的<string.h>对应,将C语言的函数定义在std命名空间内。 定义: /** @file cstring * This is a Standard C++ Library file. You should @c \#include this file * in your programs, rather than any of the @a *.h implementation files. * * This is the C++ version of the Standard C Library header @c string.h, * and its contents are (mostly) the same as that header, but are all * contained in the namespace @c std (except for names which are defined * as macros in C). */ // // ISO C++

C/C++字符串使用整理

匿名 (未验证) 提交于 2019-12-02 23:32:01
首先对函数有一个简单的认识,无论是在形实结合时,还是在return语句返回时,都有一个拷贝的过程。你传进来的参数是个值,自然函数在工作之前要把这个值拷贝一份供自己使用,你传进来的是个地址,函数也就会拷贝该地址供自己使用。同样return返回时,如果返回一个值,函数会将该值拷贝一份以提供给主调函数使用,返回的是一个指针(也就是地址),自然拷贝的就是一个地址,供主调函数使用。 下面给出四种返回字符串的方法: 1、 将字符串指针作为函数参数传入,并返回该指针。 2、 使用malloc函数动态分配内存,注意在主调函数中释放。 3、 返回一个静态局部变量。 4、 使用全局变量。 下面是详细解释: 方法一:将字符串指针作为函数参数传入,并返回该指针。 典型的strcpy()函数应该就是采用的这种方法,第一个参数为指向目的字符串的指针,返回值也为这个指针。 char* strcpy(char* des,const char* source)   {   char* r=des; assert((des != NULL) && (source != NULL));  while((*r++ = *source++)!='\0');  return des;   } 方法二:使用malloc函数动态分配,但是一定要注意在主调函数中将其释放,应为malloc动态分配的内存位于堆区

两种方法判断一个字符串是否为另外一个字符串旋转之后的字符串。(C语言)

匿名 (未验证) 提交于 2019-12-02 23:26:52
例如:给定s1 = AABCD和s2 = BCDAA,返回1 给定s1 = abcd和s2 = ACBD,返回0. AABCD左旋一个字符得到ABCDA AABCD左旋两个字符得到BCDAA 第一种:通过其中一个字符串向左移动确定第二个字符串 #include<stdio.h> #include<string.h> void left_move(char *str, int k) { while (k != 0) { char *cur = str;//必须需要另一个指针存储首地址 char tmp=*cur; while ((*(cur+1)) != '\0') { *cur = *(cur + 1); cur++; } *(cur) = tmp; k--; } } int Judge_string(char *str, const char *p)//判断函数 { int i; if (strlen(str) != strlen(p)) { return 0; } for (i = 1; i <= strlen(str); i++) { left_move(str,1); if (strcmp(str, p)==0)//strcmp函数判断str字符串是否与p字符串相同 { return 1; } } return 0; } int main() { char str[] =

第八周作业

匿名 (未验证) 提交于 2019-12-02 23:26:52
第八周作业 这个作业属于那个课程 C语言程序设计II 这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/software-engineering-class1-2018/homework/2825 我在这个课程的目标是 掌握指针、数组、地址之间的用法 这个作业在哪个具体方面帮助我实现目标 上课听老师讲解,做题目,与同学交流 参考文献 C语言程序设计II 本题要求实现一个字符串逆序的简单函数。 void f( char *p ); 函数f对p指向的字符串进行逆序操作。要求函数f中不能定义任何数组,不能调用任何字符串处理函数。 #include <stdio.h> #define MAXS 20 void f( char *p ); void ReadString( char *s ); /* 由裁判实现,略去不表 */ int main() { char s[MAXS]; ReadString(s); f(s); printf("%s\n", s); return 0; } /* 你的代码将被嵌在这里 */ Hello World! !dlroW olleH void f( char *p ) { int i,n=0,x,y; for(i=0;p[i]!='\0';) i++; x=i-1; while(n<=x) { y=p[n]; p

【C++】C++中的字符和字符串

匿名 (未验证) 提交于 2019-12-02 23:05:13
标准库类型string表示可变长的字符序列,使用string类型必须首先包含string头文件,作为标准库的一部分string定义在标准库std中。 #include <string> using std::string; 1.定义和初始化string 如何初始化类由类本身决定,一个类可以定义多种初始化对象的方式。 string s1;//默认初始化 string s2(s1);//s2是s1的副本 string s2 = s1;//等价于s2(s1),s2是s1的副本 string s3("value");//s3是字面值"value"的副本,除了字面值最后的那个空字符外 string s3 = "value";//等价于s3("value"),s3是字面值"value"的副本 string s4(n,'c');//把s4初始化为由连续n个字符'c'组成的串 2.string对象的操作 一个类除了要规定初始化其对象的方式外,还要定义对象上所能执行的操作。下面是string对象的大多数操作。 os << s //将s写到输出流os当中,返回os is >> s //从输入流is中读取字符串赋给s,字符串以空白分割,返回is getline(is,s) //从is中读取一行赋给s,返回is s.empty() //s为空返回true否则返回false s.size() /

实现在线评测系统(一)

匿名 (未验证) 提交于 2019-12-02 23:05:13
Ŀ¼ Online judge system Online judge system 研究一下在线评测系统编写的一些细节,加深对操作系统的理解,实现一个基本能用的评测机,通过shell脚本控制评测机监控用户程序。web接口和日志功能没写。 另外PE和CE功能还没写 编写语言c/c++, bash 编写环境deppin linux 编写工具vim gcc 7.3.0 T^T 学长牛逼!!! Orz 在评测系统中,我们提交一个由标准输入输出的程序,我们判断正确性的方法一部分是 修改输入输出流 ,将输入导入程序,输出导出,和标准答案进行比对。 例如添加一下代码,在程序的开始 freopen("file_name_input", "r", stdin); freopen("file_name_output", "w", stdout); 用户从web页面提交代码,服务器拿到代码,形成一个服务器本地的文件。那么我们如果通过评测程序去调用,监控这个用户代码即可。但是这就意味着我们需要在文件头部加上上面两句话。虽然修改用户代码是可行的,但是却比较麻烦。这个问题先放一边,我们先解决另一个问题 ps:如果修改用户代码,一种解决方案是把main函数修改,就改成适宜CppUnit库调用的形式。CppUnit是一种c++单元测试的库,虽然没用过,但是相似的Junit有提供对应的内存,时间检测。

一文教会你用Python实现最有效的剪切板实时监控

匿名 (未验证) 提交于 2019-12-02 22:51:30
   上网浏览网页的时候,看见好的内容免不了要使用复制粘贴,但是我们看到的内容、心里想要的内容和实际粘贴后的内容往往不一致。数据的获取始于复制,终于粘贴,那么问题来了,在这中间系统做了哪些操作,我们怎么能控制它呢?    人生苦短,我用python,查阅相关资料之后发现有很多不一样的实现方式,如利用内置ctypes模块、tk模块,第三方模块如跨平台的pyperclip模块、clipboard模块、pywin.win32clipboard模块等等,大部分都封装好了简洁易用的高级接口,方便我们直接使用。    基于强迫症的心理,本文分析比较了几种主流的方式,对他们逐一进行源码分析、读写性能实测,最后选择了读写速度最快的一种做出一个实时剪切板监控小案例,以供大家参考。 小案例实现的功能如下: 使用正则对某些文本进行智能替换,如将python2格式的代码转换为python3格式。 In [ 1 ]: import pyperclip In [ 2 ]: data = pyperclip . paste () In [ 3 ]: data Out [ 3 ]: "print 'Hello World'\r\n――――――――――――――――\r\n版权声明:本文为CSDN博主「...」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。\r\n原文链接