char函数

Dijkstra算法原理

浪子不回头ぞ 提交于 2020-01-08 12:10:49
https://blog.csdn.net/yalishadaa/article/details/55827681 算法有两个集合,集合在动态更新中。 https://www.cnblogs.com/skywang12345/p/3603935.html 学习完了原理 接下来就开始代码实践吧! 邻接矩阵 邻接矩阵是指用矩阵来表示图。它是采用矩阵来描述图中顶点之间的关系(及弧或边的权)。 假设图中顶点数为n,则邻接矩阵定义为: 下面通过示意图来进行解释。 图中的G1是无向图和它对应的邻接矩阵。上面的图G1包含了"A,B,C,D,E,F,G"共7个顶点,而且包含了"(A,C),(A,D),(A,F),(B,C),(C,D),(E,G),(F,G)"共7条边。由于这是无向图,所以边(A,C)和边(C,A)是同一条边;这里列举边时,是按照字母先后顺序列举的。 上图右边的矩阵是G1在内存中的邻接矩阵示意图。A[i][j]=1表示第i个顶点与第j个顶点是邻接点,A[i][j]=0则表示它们不是邻接点;而A[i][j]表示的是第i行第j列的值;例如,A[1,2]=1,表示第1个顶点(即顶点B)和第2个顶点©是邻接点。 邻接矩阵无向图(undirected graph)的代码说明 基本定义 class MatrixUDG { private : char mVexs [ MAX ] ; //

char *和char[]的简单解析

我们两清 提交于 2020-01-08 09:26:36
一、首先复习一下C++的四个区; 1、栈区(stack)— 在需要的时候由计算机自动分配,不需要的时候自动回收 的区域,主要存放函数的参数值,局部变量的值。 2、堆区(heap) — 一般由程序员分配(new,molloc)释放(delete,free), 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。 3、全局区(static)—全局变量和静态变量被分配到同一块内存中,在以前的C语言中,全局变量又分为初始化的和未初始化的,在C++里面没有这个区分了,他们共同占用同一块内存区。 4、常量存储区— 字符串常量 以及其他常量也是保存在此处,里面存放的东西是 不允许修改 的。 5、程序代码区—顾名思义就是储存代码的。 二、他们的区别 1、 从其声明的对象来说: char p[] = “hello world!”;这里的p是一个数组,数组大小为12字节。 char *p = “hello world!”;这里的p是一个指针,指向“hello world!”字符串起始位置。 2、 从存储位置来说: char p[] = “hello world!”;p数组作为局部变量被存储在栈区; char *p = “hello world!”;在这个声明中,"hello world!"被存储在常量区,而且是全局的,p仅仅就是个指针,指向这个区域的

地址、指针与引用

烂漫一生 提交于 2020-01-08 09:24:02
  计算机本身是不认识程序中给的变量名,不管我们以何种方式给变量命名,最终都会转化为相应的地址,编译器会生成一些符号常量并且与对应的地址相关联,以达到访问变量的目的。   变量是在内存中用来存储数据以供程序使用,变量主要有两个部分构成:变量名、变量类型,其中变量名对应了一块具体的内存地址,而变量类型则表明该如何翻译内存中存储的二级制数。我们知道不同的类型翻译为二进制的值不同,比如整型是直接通过数学转化、浮点数是采用IEEE的方法、字符则根据ASCII码转化,同样变量类型决定了变量所占的内存大小,以及如何在二进制和变量所表达的真正意义之间转化。而指针变量也是一个变量,在内存中也占空间,不过比较特殊的是它存储的是其他变量的地址。在32位的机器中,每个进程能访问4GB的内存地址空间,所以程序中的地址采用32位二进制数表示,也就是一个整型变量的长度,地址值一般没有负数所以准确的说指针变量的类型应该是unsigned int 即每个指针变量占4个字节。还记得在定义结构体中可以使用该结构体的指针作为成员,但是不能使用该结构的实例作为成员吗?这是因为编译器需要根据各个成员变量的大小分配相关的内存,用该结构体的实例作为成员时,该结构体根本没有定义完整,编译器是不会知道该如何分配内存的,而任何类型的指针都只占4个字节,编译器自然知道如何分配内存。我们在书写指针变量时给定的类型是它所指向的变量的类型

709. To Lower Case - LeetCode

我是研究僧i 提交于 2020-01-08 03:54:46
Question 709. To Lower Case Sollution 题目大意:字符串大写转小写 思路: 直接调用Java API函数 字符串转char数组,遍历数组,判断如果大写就转小写 Java实现: public String toLowerCase(String str) { char[] arr = str.toCharArray(); for (int i = 0; i < arr.length; i++) { if (arr[i] >= 'A' && arr[i] <= 'Z') { arr[i] += 32; } } return String.valueOf(arr); } 来源: https://www.cnblogs.com/okokabcd/p/9513843.html

C语言指针类型 强制转换

坚强是说给别人听的谎言 提交于 2020-01-08 01:50:40
关于C语言指针类型 强制转换 引用一篇文章: C语言中,任何一个变量都必须占有一个地址,而这个地址空间内的0-1代码就是这个变量的值。不同的数据类型占有的空间大小不一,但是他们都必须有个地址,而这个地址就是硬件访问的依据,而名字只是提供给程序员的一种记住这个地址的方便一点的方法。但是,不同的变量在机器中都是0-1代码,所以,我们不能简单的通过检查一个值的位来判断它的类型。 例如,定义如下: int a; float b; double c; long double d; (假设它们所占的字节分别是 4、 8、 8、 10,而且连续存储于某个地址空间,起始地址是 100,则我们可以得到如下内存分布 ) a变量就是由以地址100开始到103结束的4个字节内存空间内的0-1代码组成。b变量则是由以地址104开始到112结束的8个字节内存空间内的0-1代码组成。而在机器中,这些内存都是连续的0-1代码,机器并不知道100~103是整型而104~111是float型,所有这些类型都是编译器告知的。当我们用a时,由于前面把a定义为int型,则编译器知道从a的地址开始向后取4个字节再把它解释成int型。那么(float)a,就是先按照int类型取出该数值,再将该数值按照int to float的规则转换成float型。所以强制类型转换就是按照某个变量的类型取出该变量的值,再按照***to**

C++之高级编程

删除回忆录丶 提交于 2020-01-07 22:25:04
抽象: 纯虚函数: 1.virtual函数声明时后面加上 "=0"; 2.纯虚函数不需要定义 3.所有的纯虚函数都需要复写 1 #include <iostream> 2 #include <string.h> 3 #include <unistd.h> 4 5 using namespace std; 6 7 class Human{ 8 private: 9 int a; 10 public: 11 virtual void eating(void) = 0; 12 virtual void wearing(void) = 0; 13 virtual void driving(void) = 0; 14 virtual ~Human() {cout <<"~Human()"<<endl;} 15 virtual Human *test (void){cout<<"Human's test"<<endl;return this;} 16 17 }; 18 class Englishman : public Human{ 19 public: 20 void eating(void){cout<<"use knife to eat"<<endl;} 21 void wearing(void){cout<<"wear english style"<<endl;} 22 void

SQL Server中Text、varchar(max)和varbinary(max)数据类型区别

我的未来我决定 提交于 2020-01-07 15:41:57
以前只知道text和image是可能被SQL Server淘汰的数据类型,但具体原因不太清楚,今天读书的时候发现了text与varchar(max)和nvarchar(max)的区别,主要是对操作符的限制,text只能被下列函数作用: 函数 语句 DATALENGTH READTEXT PATINDEX SET TEXTSIZE SUBSTRING UPDATETEXT TEXTPTR WRITETEXT TEXTVALID 举个列子,如果“文本”这一列的数据类型为text,那么它将不能用于“=”“left()”等操作,比如下面的例子: 建立表,填充数据: if exists ( select * from sysobjects where id = OBJECT_ID ( '[asdf]' ) and OBJECTPROPERTY ( id , 'IsUserTable' ) = 1 ) DROP TABLE [asdf] CREATE TABLE [asdf] ( [inttest] [int] IDENTITY ( 1 , 1 ) NOT NULL , [text] [text] NULL , [varcharmax] varchar(max) NULL ) ALTER TABLE [asdf] WITH NOCHECK ADD CONSTRAINT [PK_asdf]

VS 错误处理

喜欢而已 提交于 2020-01-07 12:12:43
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 1错误: fatal error C1010: unexpected endof file while looking for precompiled header. Did you forget to add '#include"StdAfx.h"' to your source? #include"StdAfx.h" 你把这个放在头文件里面就行了 2 vc++ 编程出现错误error C2447: missing function header (old-styleformal list?) 原因:函数后面多了分号; SUNSHINE_APISSN_RETURN SsnWriteProfileString(__in INT nPlugInId, __in_opt LPTSTRlpszGroupName, __in LPTSTR lpszKey, __in LPTSTR lpszValue) ; 3 errorC2491: 'SsnWriteProfileString' : definition of dllimport function not allowed 错误 C2491:“SsnWriteProfileString’:dllimport 函数的定义不允许的 SUNSHINE_API SSN

leet344.反转字符串

戏子无情 提交于 2020-01-07 08:34:46
编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。 不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。 你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。 示例 1: 输入:["h","e","l","l","o"] 输出:["o","l","l","e","h"] 示例 2: 输入:["H","a","n","n","a","h"] 输出:["h","a","n","n","a","H"] 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/reverse-string #include <stdio.h> /** 输入字符串以字符数组 char[] 的形式给出。 不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。 简单的交换 */ void reverseString_1(char* s, int sSize) { int i =0; int tail = sSize-1; char temp; while(i+1 <= sSize/2 ) { temp = s[i]; s[i] = s[tail-i]; s[tail-i] = temp; i++; } //

字符串的常用操作(字符串的操作用得比较多,须掌握扎实)

一世执手 提交于 2020-01-07 05:45:25
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 字符串的常用操作(字符串的操作用得比较多,须掌握扎实) Length:属性,返回字符串中的字符个数。 IndexOf-搜索函数 int String.IndexOf(string value); 返回字符串中第一次出现子字符串的字符位置,从0开始,未找到子字符串返回-1。 int String.IndexOf(string value,int startIndex); 同上,但是从字符串的startIndex位置开始搜索,一直到字符串末尾。 int String.IndexOf(string value,int startIndex,int count); 同上,但是从字符串的指定位置开始,并向后搜索count个字符。 注意后两个参数的取值要满足下面条件: 0<=startIndex 0<=Length-startIndex 示例:string mystr="ABCABCABC"; 表达式 返回值 mystr.IndexOf("a") -1 //大 小写 敏感 mystr.IndexOf("A") 0 mystr.IndexOf("A",0) 0 //第一个字符的索引号为0 mystr.IndexOf("A",1) 3 mystr.IndexOf("A",1,2) -1 mystr.IndexOf("A",1