char函数

程序的内存分配

北城以北 提交于 2020-02-15 07:14:06
本人收集整理!感觉非常经典,,与众人阅之! 一个由c/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack):由编译器自动分配释放 ,站的特点是空间小但被CPU访问的速度快,使用户存放程序中临时创建的变量.由于桟的后进后出的特点,所以桟特别方便用来保存和恢复调用现场.用于存储占用空间长度不变并且占用空间小的数据类型的内存段,而相同类型的数据占用的空间是等长的,其操作方式类似于数据结构中的栈。 2、堆区(heap):它大小并不固定,可动态扩张或缩减.用于存放数据长度可变或内存占用较大的数据, 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。 3、全局区(静态区static):全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。 - 程序结束后有系统释放 4、文字常量区:常量字符串就是放在这里的。 程序结束后由系统释放 5、程序代码区:代码区用来存放可执行文件的操作指令,(即二进制代码)也就是可执行程序内存中的镜像.代码段需要防止运行时被非法修改,所以只允许读取操作.如程序中的函数就存储在这段内存。 二、例子程序 这是一个前辈写的,非常详细 //main.cpp int a = 0; 全局初始化区 char

DataWhale组队打卡学习营task02-3

北城余情 提交于 2020-02-15 05:22:47
循环神经网络 从零开始实现循环神经网络 我们先尝试从零开始实现一个基于字符级循环神经网络的语言模型,这里我们使用周杰伦的歌词作为语料,首先我们读入数据: import torch import torch . nn as nn import time import math import sys sys . path . append ( "/home/kesci/input" ) import d2l_jay9460 as d2l ( corpus_indices , char_to_idx , idx_to_char , vocab_size ) = d2l . load_data_jay_lyrics ( ) device = torch . device ( 'cuda' if torch . cuda . is_available ( ) else 'cpu' ) one-hot向量 我们需要将字符表示成向量,这里采用one-hot向量。假设词典大小是N,每次字符对应一个从0到N-1的唯一的索引,则该字符的向量是一个长度为N的向量,若字符的索引是i,则该向量的第i个位置为1,其他位置为0。下面分别展示了索引为0和2的one-hot向量,向量长度等于词典大小。 def one_hot ( x , n_class , dtype = torch . float32 ) :

高校学生学籍系统C++&mysql

半世苍凉 提交于 2020-02-15 01:01:48
/* C++程序设计实践教学环节任务书 一、题目:高校学籍管理系统 二、目的与要求 1. 目的: 1.掌握C++语言基本知识及其编程方法 2.掌握类和对象的基本概念与用法 3.掌握面向对象中的继承与多态等面象对象特性 4.掌握文件流的基本操作 2. 要求 基本要求: (1)要求利用面向对象的方法以及C++的编程思想来完毕系统的设计; (2)要求在设计的过程中,建立清晰的类层次。 (3)在系统中至少要定义8个类,每一个类中要有各自的属性和方法。 (4)在系统的设计中,要求使用面向对象的继承与多态 */ #include <iostream> #include <stdlib.h> #include <string> #include <winsock2.h> #include <mysql.h> #pragma comment(lib,"ws2_32") #pragma comment(lib,"libmysql") using namespace std; class Student { int id; char name[200]; char sex[100]; char min_zu[220]; char ji_guan[330]; char sheng_fen_zheng_hao[20]; char QQ[20]; char phone[20]; int score;

C@指针&数组

拟墨画扇 提交于 2020-02-15 00:54:03
一、指针数组和数组指针 1、字面意思理解指针数组和数组指针 指针数组的实质就是一个数组,这个数组中存储的内容全部是指针变量 数组指针的实质是一个指针,这个指针指向的是一个数组。 2、分析指针数组和数组指针的表达式 (1)int*p[5]; int(*p)[5]; int *(p[5]); (2)一般规律 :int *p;(p是一个指针) int p[5] ;(p是一个数组) 总结:我们定义一个符号时,关键在于首先找到定义的符号是谁(第一步找核心) 其次再来看谁跟核心最近,谁跟核心结合(第二部:找结合) 以后继续向外扩展(第三步:继续向外结合直到符号完) (3)核心结合 - 如何核心和 “ * ”结合,表示核心是指针, - 如果核心和“[ ]”结合表示核心是数组, - 如果核心和小括号“()”结合,表示核心是函数 (4)一般规律来分析3个符号 例子1: int *p[5]; (“[ ]”的优先级比“ * ”优先级高) p是一个数组,数组有5个元素,数组中的元素都是指针,指针指向的元素类型是int类型,整个符号是一个指针数组。 例子2: int (*p)[5]; 核心是p,p是一个指针,因为p被用括号和星好强制结合起来了。指针指向一个数组,数组有5个元素,数组中存在的元素是int类型; 例子3: int *(p[5]); 这里 加小括号没有意义,没起到左右,没有小括号,也是p与[

第七周作业

有些话、适合烂在心里 提交于 2020-02-14 23:11:23
第七周作业 这个作业属于哪个课程 C语言程序设计II 这个作业要求在哪里 2019年春季学期第七周作业 我在这个课程的目标是 我希望能够通过学习C语言的知识,编写程序 这个作业在哪个具体方面帮助我实现目标 掌握数组名作为函数参数的用法 参考文献 字母大小转换, https://www.csdn.net/, 本周作业题目 题目1. 6-2 每个单词的最后一个字母改成大写 函数fun的功能是:将p所指字符串中每个单词的最后一个字母改成大写。(这里的“单词”是指由空格隔开的字符串)。 函数接口定义: void fun( char *p ); 其中 p 是用户传入的参数。函数将 p所指字符串中每个单词的最后一个字母改成大写。 裁判测试程序样例: #include <stdio.h> void fun( char *p ); int main() { char chrstr[64]; int d ; gets(chrstr); d=strlen(chrstr) ; chrstr[d] = ' ' ; chrstr[d+1] = 0 ; fun(chrstr); printf("\nAfter changing: %s\n", chrstr); return 0; } /* 请在这里填写答案 */ 输入样例: my friend is happy 输出样例: After changing:

动手学深度学习之循环神经网络基础

时光毁灭记忆、已成空白 提交于 2020-02-14 22:52:38
循环神经网络 本节介绍循环神经网络,下图展示了如何基于循环神经网络实现语言模型。其目的是基于当前的输入与过去的输入序列,预测序列的下一个字符。循环神经网络引入一个隐藏变量 H H H ,用 H t H_t H t ​ 表示 H H H 在时间步 t t t 的值。 H t H_t H t ​ 的计算基于 X t X_t X t ​ 和 H t − 1 H_{t-1} H t − 1 ​ ,可以认为 H t H_t H t ​ 记录了到当前字符为止的序列信息,利用 H t H_t H t ​ 对序列的下一个字符进行预测。 #### 循环神经网络的构造 假设 X t ∈ R n × d X_t\in R^{n\times d} X t ​ ∈ R n × d 是时间步 t t t 的小批量输入, H t ∈ R n × h H_t\in R^{n\times h} H t ​ ∈ R n × h 是该时间步的隐藏变量,则: H t = ϕ ( X t W x h + H t − 1 W h h + b h ) H_t=\phi(X_tW_{xh}+H_{t-1}W_{hh}+b_h) H t ​ = ϕ ( X t ​ W x h ​ + H t − 1 ​ W h h ​ + b h ​ ) 其中, W x h ∈ R d × h W_{xh}\in R^{d\times h} W

《动手学深度学习》系列笔记 —— 语言模型(n元语法、随机采样、连续采样)

南楼画角 提交于 2020-02-14 21:31:12
目录 1. 语言模型 2. n元语法 3. 语言模型数据集 4. 时序数据的采样 4.1 随机采样 4.2 相邻采样 一段自然语言文本可以看作是一个离散时间序列,给定一个长度为 \(T\) 的词的序列 \(w_1, w_2, \ldots, w_T\) ,语言模型的目标就是评估该序列是否合理,即计算该序列的概率: \[ P(w_1, w_2, \ldots, w_T). \] 1. 语言模型 假设序列 \(w_1, w_2, \ldots, w_T\) 中的每个词是依次生成的,我们有 例如,一段含有4个词的文本序列的概率 \[ P(w_1, w_2, w_3, w_4) = P(w_1) P(w_2 \mid w_1) P(w_3 \mid w_1, w_2) P(w_4 \mid w_1, w_2, w_3). \] 语言模型的参数就是词的概率以及给定前几个词情况下的条件概率。设训练数据集为一个大型文本语料库,如维基百科的所有条目,词的概率可以通过该词在训练数据集中的相对词频来计算,例如, \(w_1\) 的概率可以计算为: 其中 \(n(w_1)\) 为语料库中以 \(w_1\) 作为第一个词的文本的数量, \(n\) 为语料库中文本的总数量。 类似的,给定 \(w_1\) 情况下, \(w_2\) 的条件概率可以计算为: 其中 \(n(w_1, w_2)\) 为语料库中以 \

C语言结构体和共用体_07

陌路散爱 提交于 2020-02-14 17:45:21
概述 定义结构体类型变量的方法 结构体变量的引用 结构体变量的初始化 结构体数组 指向结构体类型数据的指针 用指针处理链表 共用体 枚举类型 用 typedef定义类型 概述 定义一个结构体的一般形式: struct 结构名 { 成员列表 }; 一个结构体有一个结构名,但不是必须的。成员列表有若干个成员组成,每个成员都是该结构的一个组成部分。对每个成员也必须作类型说明,其形式为: 类型说明符 成员名; 例如: // 学号、姓名、性别、年龄、地址等属性 struct Student { int num; char name[20]; char sex; int age; char addr[30]; }; 定义结构体类型变量的方法 在定义了结构体变量后,系统会位置分配内存单元。 可以采用三种方法定义结构体类型变量: 1)先声明结构体类型再定义变量名; struct Student person1; struct Student person2; 则,person1、person2 具有struct Student类型的结构。 2)在声明类型的同时定义变量 struct Student { int num; char name[20]; char sex; int age; char addr[30]; } student1, student2; 3)直接定义结构体类型变量

c++11 右值引用、移动语义和完美转发

て烟熏妆下的殇ゞ 提交于 2020-02-14 03:19:49
c++11 右值引用、移动语义和完美转发 作者:StormZhu 链接:https://www.jianshu.com/p/d19fc8447eaa c++中引入了 右值引用 和 移动语义 ,可以避免无谓的复制,提高程序性能。有点难理解,于是花时间整理一下自己的理解。 左值、右值 C++ 中所有的值都必然属于左值、右值二者之一。左值是指表达式结束后依然存在的 持久化对象 ,右值是指表达式结束时就不再存在的 临时对象 。所有的具名变量或者对象都是左值,而右值不具名。很难得到左值和右值的真正定义,但是有一个可以区分左值和右值的便捷方法: 看能不能对表达式取地址,如果能,则为左值,否则为右值 。 看见书上又将右值分为将亡值和纯右值。纯右值就是 c++98 标准中右值的概念,如非引用返回的函数返回的临时变量值;一些运算表达式,如1+2产生的临时变量;不跟对象关联的字面量值,如2,'c',true,"hello";这些值都不能够被取地址。 而将亡值则是 c++11 新增的和右值引用相关的表达式,这样的表达式通常时将要移动的对象、 T&& 函数返回值、 std::move() 函数的返回值等, 不懂将亡值和纯右值的区别其实没关系,统一看作右值即可,不影响使用。 示例: int i=0;// i是左值, 0是右值 class A { public: int a; }; A getTemp() {

Sybase数据库常用sql语言

ε祈祈猫儿з 提交于 2020-02-13 22:39:42
Sybase数据库常用sql语言 1,表备份: --table_name1:需要备份的表; table_name2:备份后的表 SELECT * into table_name2 from table_name1 2,删除列: ALTER TABLE table_name DELETE column_name; 3,增加列: ALTER TABLE table_name ADD (column_name DATA_TYPE [NOT] NULL); 4,修改列的空与非空: ALTER TABLE table_name MODIFY column_name [NOT] NULL; 5,修改列名: ALTER TABLE table_name RENAME old_column_name TO new_column_name; 6,快速建立临时表: SELECT * INTO table_name_new FROM table_name_old; 7,修改表名: ALTER TABLE old_table_name RENAME new_table_name 8,增加主键约束: ALTER TABLE tb_name ADD CONSTRAINT pk_name PRIMARY KEY(col_name,..) 9,删除主键约束: ALTER TABLE tb_name DROP