char函数

堆和栈的区别

谁说胖子不能爱 提交于 2020-01-16 05:30:07
一、预备知识—程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack) 由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2、堆区(heap) 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。 3、全局区(静态区)(static) 全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。程序结束后由系统释放。 4、文字常量区 常量字符串就是放在这里的。程序结束后由系统释放 5、程序代码区 存放函数体的二进制代码。 二、例子程序 这是一个前辈写的,非常详细 //main.cpp int a = 0; //全局初始化区 char *p1; //全局未初始化区 main() { int b; //栈 char s[] = "abc"; //栈 char *p2; //栈 char *p3 = "123456"; //123456\0在常量区,p3在栈上。 static int c =0; //全局(静态)初始化区 p1 = (char *)malloc(10); p2 = (char *)malloc(20); //分配得来得10和20字节的区域就在堆区。

堆和栈的区别

旧时模样 提交于 2020-01-16 05:29:37
先简短的总结一下,这几天知识点吧 时间复杂度上:一般1e8是内部算法或结构是线性的,1e6的内部可为nlogn的算法; 空间估计:主函数内的局部变量是用栈存储的,有栈顶及栈大小的规定极易溢出。一般申请1M空间,int型数组250000左右。而全局(静态)变量存储在堆中,可以申请很大的空间。 下面是专业介绍,讲的很好啊! 一、预备知识—程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其 操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回 收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。 3、全局区(静态区)(static)—,全局变量和静态变量的存储是放在一块的,初始化的 全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另 一块区域。 - 程序结束后由系统释放。 4、文字常量区 —常量字符串就是放在这里的。 程序结束后由系统释放 5、程序代码区—存放函数体的二进制代码。 二、例子程序 这是一个前辈写的,非常详细 //main.cpp int a = 0; 全局初始化区 char *p1; 全局未初始化区 main() { int b; 栈 char s[] =

内存堆和栈的区别

本小妞迷上赌 提交于 2020-01-16 05:19:17
在计算机领域,堆栈是一个不容忽视的概念,我们编写的C语言程序基本上都要用到。但对于很多的初学着来说,堆栈是一个很模糊的概念。 堆栈:一种数据结构、一个在程序运行时用于存放的地方,这可能是很多初学者的认识,因为我曾经就是这么想的和汇编语言中的堆栈一词混为一谈。我身边的一些编程的朋友以及在网上看帖遇到的朋友中有好多也说不清堆栈,所以我想有必要给大家分享一下我对堆栈的看法,有说的不对的地方请朋友们不吝赐教,这对于大家学习会有很大帮助。 数据结构的栈和堆 首先在数据结构上要知道堆栈,尽管我们这么称呼它,但实际上堆栈是两种数据结构:堆和栈。 堆和栈都是一种数据项按序排列的数据结构。 栈就像装数据的桶或箱子 我们先从大家比较熟悉的栈说起吧,它是一种具有 后进先出 性质的数据结构,也就是说后存放的先取,先存放的后取。 这就如同我们要取出放在箱子里面底下的东西(放入的比较早的物体),我们首先要移开压在它上面的物体(放入的比较晚的物体)。 堆像一棵倒过来的树 而堆就不同了,堆是一种 经过排序的树形数据结构 ,每个结点都有一个值。 通常我们所说的堆的数据结构,是指二叉堆。 堆的特点是根结点的值最小(或最大),且根结点的两个子树也是一个堆。 由于堆的这个特性,常用来实现优先队列,堆的存取是随意,这就如同我们在图书馆的书架上取书,虽然书的摆放是有顺序的,但是我们想取任意一本时不必像栈一样

typedef 的用法及与#define区别

别等时光非礼了梦想. 提交于 2020-01-16 04:34:17
typedef 的用法 用途一: 定义一种类型的别名,而不只是简单的宏替换。可以用作同时声明指针型的多个对象。比如: char* pa, pb; // 这多数不符合我们的意图,它只声明了一个指向字符变量的指针, // 和一个字符变量; 以下则可行: typedef char* PCHAR; PCHAR pa, pb; 用途二: 用在旧的 C 代码中,帮助 struct 。以前的代码中,声明 struct 新对象时,必须要带上 struct ,即形式为: struct 结构名对象名,如: struct tagPOINT1 { int x; int y; }; struct tagPOINT1 p1; 而在 C++ 中,则可以直接写:结构名对象名,即: tagPOINT1 p1; typedef struct tagPOINT { int x; int y; }POINT; POINT p1; // 这样就比原来的方式少写了一个 struct ,比较省事,尤其在大量使用的时候 或许,在 C++ 中, typedef 的这种用途二不是很大,但是理解了它,对掌握以前的旧代码还是有帮助的,毕竟我们在项目中有可能会遇到较早些年代遗留下来的代码。 用途三: 用 typedef 来定义与平台无关的类型。 比如定义一个叫 REAL 的浮点类型,在目标平台一上,让它表示最高精度的类型为:

Visual C++中的异常处理浅析

心已入冬 提交于 2020-01-16 00:23:37
Visual C++中的异常处理浅析 作者: 宋宝华 出处: 天极网 责任编辑: 方舟   Visual C++提供了对C语言、C++语言及MFC的支持,因而其涉及到的异常(exception)处理也包含了这三种类型,即C语言、C++语言和MFC的异常处理。除此之外,微软对C和C++的异常处理进行了扩展,提出了结构化异常处理(SEH)的概念,它支持C和C++(与之相比,MFC异常处理仅支持C++)。   一个典型的异常处理包含如下几个步骤:   (1)程序执行时发生错误;   (2)以一个异常对象(最简单的是一个整数)记录错误的原因及相关信息;   (3)程序检测到这个错误(读取异常对象);   (4)程序决定如何处理错误;   (5)进行错误处理,并在此后恢复/终止程序的执行。   C、C++、MFC及SEH在这几个步骤中表现出了不同的特点。本文将对这四种异常处理进行介绍,并对它们进行对比分析。本文例程的调试平台为Visual C++6.0,操作系统为Windows XP,所有程序均调试通过。   在进入正式的讲解之前,先说几句废话。许多的编程新手对异常处理视而不见,程序里很少考虑异常情况。一部分人甚至根本就不考虑,以为程序总是能以正确的途径运行。譬如我们有的程序设计者调用fopen打开一个文件后,立马就开始进行读写操作,根本就不考虑文件是否正常打开了。这种习惯一定要改掉

第七周编程总结

青春壹個敷衍的年華 提交于 2020-01-16 00:00:47
基础作业: 一.每个单词的最后一个字母改成大写 函数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: mY frienD iS happY 代码: void fun( char p ) { int i; for(i;p[i]!='\0';i++) { if(p[i+1]==' ') { p[i]=p[i]-'c'+'C'; } } } 流程图: 本题调试过程碰到的问题及解决办法 最开始用C++编译时发现题目第七行本就存在错误 d

Visual C++中的异常处理浅析[轉]

China☆狼群 提交于 2020-01-15 22:59:45
Visual C++ 提供了对 C 语言、 C++ 语言及 MFC 的支持,因而其涉及到的异常( exception )处理也包含了这三种类型,即 C 语言、 C++ 语言和 MFC 的异常处理。除此之外,微软对 C 和 C++ 的异常处理进行了扩展,提出了结构化异常处理( SEH )的概念,它支持 C 和 C++ (与之相比, MFC 异常处理仅支持 C++ )。 一个典型的异常处理包含如下几个 步骤 : (1)程序执行时发生错误; (2)以一个异常对象(最简单的是一个整数)记录错误的原因及相关信息; (3)程序检测到这个错误(读取异常对象); (4)程序决定如何处理错误; (5)进行错误处理,并在此后恢复/终止程序的执行。 C、C++、MFC及SEH在这几个步骤中表现出了不同的特点。本文将对这四种异常处理进行介绍,并对它们进行对比分析。本文例程的调试平台为Visual C++6.0 ,操作系统为 Windows XP ,所有程序均调试通过。 在进入正式的讲解之前,先说几句废话。许多的编程新手对异常处理视而不见,程序里很少考虑异常情况。一部分人甚至根本就不考虑,以为程序总是能以正确的途径运行。譬如我们有的程序设计者调用fopen打开一个文件后,立马就开始进行读写操作,根本就不考虑文件是否正常打开了。这种习惯一定要改掉,纵使你再不愿意!这是软件健壮性的需要!异常处理不是浪费时间!

oracle sql日期比较:

天大地大妈咪最大 提交于 2020-01-15 12:33:04
共三部分: 第一部分:oracle sql日期比较: http://www.blogjava.net/forker/archive/2007/09/07/143467.html#Post 第二部分: Oracle 获取当前日期及日期格式 http://blog.sina.com.cn/s/blog_6168ee920100l2ye.html 第三部分: 获取昨天: select trunc(SYSDATE-1) from dual; 检查一下: select to_char (trunc(SYSDATE-1),'yyyy-mm-dd HH24:MI:SS') from dual; 获取上个月第一天00:00:00: select add_months(trunc(sysdate,'MON'),-1) from dual select add_months(trunc(sysdate,'MON'),-13) from dual也可以 获取上个月今天00:00:00: SELECT trunc(add_months( sysdate,-1 ))FROM dual 获得本季度第一天 SELECT TRUNC(add_months(SYSDATE,0),'Q') FROM dual 获得上季度第一天 SELECT TRUNC(add_months(SYSDATE,-3),'Q') FROM

C/C++获取文件后缀名并且比较

牧云@^-^@ 提交于 2020-01-15 07:07:05
以下这段是VC中过去文件后缀名的方法 1。 CString GetSuffix(CString strFileName) { return strFileName.Right(strFileName.GetLength()-strFileName.ReverseFind('.')-1); } 2。PathFindExtension 3。忽略大小写方法 CString::MakeUpper();全部转化为大写; CString::MakeLower();全部转化为小写; 取得文件的类型 PathFindExtension() ///////////////////////////////////////////////////////////////////////// // // PathFindExtension();函数的使用 // 作用:取得文件的后缀名 // 注意:头文件 shlwapi.h 包含库:shlwapi.lib // // ///////////////////////////////////////////////////////////////////////// #include <tchar.h> #include <iostream> #include <Windows.h> #include <shlwapi.h> using namespace

c++中有关字符串的一些问题(可能不全面)

♀尐吖头ヾ 提交于 2020-01-15 00:49:40
字符数组*char 有关的应用函数: 1.字符串复制函数strcpy 其函数原型为strcpy(char[],const char[]); strcpy是string copy(字符串复制)的缩写。它的作用是将第二个字符数组中的字符串复制到第一个字符数组中去,将第一个字符数组中的相应字符覆盖。 eg. # include <cstdio> # include <iostream> # include <string.h> using namespace std ; int main ( ) { char str1 [ 10 ] ; char str2 [ ] = { "China" } ; strcpy ( str1 , str2 ) ; cout << str1 << endl ; return 0 ; } 2.字符串长度函数strlen strlen是string length(字符串长度)的缩写。 它是测试字符串长度的函数。其函数的值为字符串中的实际长度,不包括′\0′在内。eg. # include <cstdio> # include <iostream> # include <string.h> using namespace std ; int main ( ) { char str1 [ ] = { "China" } ; int len = strlen (