![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
挑战30天C++入门极限
jacky_20001
这个作者很懒,什么都没留下…
展开
-
挑战30天C++入门极限-C/C++中枚举类型(enum)
如果一个变量你需要几种可能存在的值,那么就可以被定义成为枚举类型。之所以叫枚举就是说将变量或者叫对象可能存在的情况也可以说是可能的值一一例举出来。 举个例子来说明一吧,为了让大家更明白一点,比如一个铅笔盒中有一支笔,但在没有打开之前你并不知道它是什么笔,可能是铅笔也可能是钢笔,这里有两种可能,那么你就可以定义一个枚举类型来表示它!enum box{pencil,pen};//这里你就定义了转载 2006-04-11 10:24:00 · 729 阅读 · 0 评论 -
VC环境下创建生成EXE的symbian工程问题集
问:1. 我在VC下都是生成APP文件,那么有没办法生成EXE呢?如果不能直接在VC里生成,那有其它的什么办法吗?答:1. 生成什么类型的目标文件跟使用的IDE无关,只取决于工程的类型,即.mmp文件中指定的TARTGETTYPE。你Build一下SDK安装目录的"/Examples/basics/helloworld"示例程序就明白了。问:2. 我的程序使用别人提供的DLL和LIB,那么在实转载 2006-04-11 11:05:00 · 1446 阅读 · 0 评论 -
挑战30天C++入门极限-C/C++中利用数组名/指针进行排序实例
在c/c++中利用数组名作为函数参数传递排序和用指针进行排序的例子。 以下两个例子要非常注意,函数传递的不是数组中数组元素的真实值而是数组在内存中的实际地址。#include void main(void) { void reversal(); static int a[10] = {0,1,2,3,4,5,6,7,8,9}; /* 建立一个数组并初始化 */ int转载 2006-04-11 10:27:00 · 666 阅读 · 0 评论 -
挑战30天C++入门极限-C++中布尔类型
布尔类型对象可以被赋予文字值true或者false,所对应的关系就是真与假的概念。 我们通常使用的方法是利用他来判断条件的真与假,例如下面的代码:#include iostream> using namespace std; void main(void) { bool found = true; if (found) { cout转载 2006-04-11 10:30:00 · 776 阅读 · 0 评论 -
挑战30天C++入门极限-C/C++中函数指针的含义(上)
函数存放在内存的代码区域内,它们同样有地址,我们如何能获得函数的地址呢? 如果我们有一个int test(int a)的函数,那么,它的地址就是函数的名字,这一点如同数组一样,数组的名字就是数组的起始地址。 定义一个指向函数的指针用如下的形式,以上面的test()为例: int (*fp)(int a);//这里就定义了一个指向函数的指针 函数指针不能绝对不能指向不同类型,或转载 2006-04-11 10:42:00 · 749 阅读 · 0 评论 -
挑战30天C++入门极限-exit()与return()函数的差别
在main函数中我们通常使用return (0);这样的方式返回一个值。 但这是限定在非void情况下的也就是void main()这样的形式。 exit()通常是用在子程序中用来终结程序用的,使用后程序自动结束跳会操作系统。 但在如果把exit用在main内的时候无论main是否定义成void返回的值都是有效的,并且exit不需要考虑类型,exit(1)等价于return (1)转载 2006-04-11 10:49:00 · 998 阅读 · 0 评论 -
战30天C++入门极限-C/C++中的结构体(3)
上面我们说明了易用引用对结构体进行操作的优势,下面我们重点对比两个例程,进一部分析关于效率的问题。//-------------------------------------例程1--------------------------------- #include iostream> #include string> using namespace std; stru转载 2006-04-11 10:58:00 · 648 阅读 · 0 评论 -
战30天C++入门极限-C/C++中结构体(struct)知识点强化(3)
在create()函数内部我们先写成这样: test *create() { test *ls;//节点指针 test *le;//链尾指针 ls = new test;//把ls指向动态开辟的堆内存地址 cin>>ls->name>>ls->socre; head=NULL;//进入的时候先不设置head指针指向任何地址,因为不知道是否转载 2006-04-11 11:02:00 · 631 阅读 · 0 评论 -
战30天C++入门极限-C/C++中结构体(struct)知识点强化(4)
代码中的else条件是为了设置前一个节点next指向而写的,这点我们记住先看下面的代码,稍后大家回过头想就明白了le=ls; ls=new test; cin>>ls->name>>ls->socre; le=ls;这么写就是为了保存上一次循环指针的位置而设的,正是为了上面的else代码而做的预先保留 ls=new test; cin>>ls->name>>ls->socre;转载 2006-04-11 11:02:00 · 722 阅读 · 0 评论 -
挑战30天C++入门极限-C/C++中数组和指针类型的关系
对于数组和多维数组的内容这里就不再讨论了,前面的教程有过说明,这里主要讲述的数组和指针类型的关系,通过对他们之间关系的了解可以更加深入的掌握数组和指针特性的知识! 一个整数类型数组如下进行定义:int a[]={1,2,3,4}; 如果简单写成:a;//数组的标识符名称 这将代表的是数组第一个元素的内存地址,a;就相当于&a[0],它的类型是数组元素类型的指针,在这个例转载 2006-04-11 10:23:00 · 590 阅读 · 0 评论 -
挑战30天C++入门极限-c/c++中指针学习的两个绝好例子
对于众多人提出的c/c++中指针难学的问题做个总结: 指针学习不好关键是概念不清造成的,说的简单点就是书没有认真看,指针的学习犹如人在学习饶口令不多看多学多练是不行的,下面是两个很经典的例子,很多书上都有,对于学习的重点在于理解*x和x的理解,他们并不相同,*x所表示的其实就是变量a本身,x表示的是变量a在内存中的地址,如果想明白可以输出观察cout<<*x"|"x;,当定义了int *x;后转载 2006-04-11 10:25:00 · 759 阅读 · 0 评论 -
挑战30天 C/C++ 入门极限系列教程-引言
作为一个长篇的C++入门教程,无论如何也应该有这么个引言,可是文笔并不好的我,想了很久也不知道该如何写。。。。。。 仔细想想,与其把这篇短文当作教程的引言,其实它更应该是一篇引导初学者步入C++殿堂的策论。 几年并不算很长的编程经验,使我感触颇深,痛苦迷茫,以及成功后的喜悦一直交替着伴随我,爱好编程的我,在学习期间也被很多很多学习的困难疑惑所阻挡,甚至不只一次的想放弃。 让我初次转载 2006-04-11 10:30:00 · 1674 阅读 · 0 评论 -
挑战30天C++入门极限-C/C++中利用空指针简化代码,提高效率
这里的写法,可以避免使用 for 循环,减少栈空间内存的使用和减少运行时的计算开销!#include iostream> #include string> using namespace std; void print_char(char* array[]);//函数原形声明 void main(void) { char* t转载 2006-04-11 10:41:00 · 678 阅读 · 0 评论 -
战30天C++入门极限-对C++中引用的补充说明(实例二)
下面我们要说一下,也是补充中最重要最需要掌握的内容,也是对传统函数操作的内存状态的一个补充学习。 下面我们来看一个例子:#include iostream> #include string> using namespace std; float c; float test(float,float); void main(int argc,char* argv[])转载 2006-04-11 10:54:00 · 714 阅读 · 0 评论 -
战30天C++入门极限-C/C++中的结构体(1)
什么是结构体? 简单的来说,结构体就是一个可以包含不同数据类型的一个结构,它是一种可以自己定义的数据类型,它的特点和数组主要有两点不同,首先结构体可以在一个结构中声明不同的数据类型,第二相同结构的结构体变量是可以相互赋值的,而数组是做不到的,因为数组是单一数据类型的数据集合,它本身不是数据类型(而结构体是),数组名称是常量指针,所以不可以做为左值进行运算,所以数组之间就不能通过数组名称相互复制转载 2006-04-11 10:56:00 · 1686 阅读 · 1 评论 -
战30天C++入门极限-C/C++中结构体(struct)知识点强化(1)
在上一个教程中我们已经简单的阐述了什么是结构体了,为了进一部的学习结构体这一重要的知识点,我们今天来学习一下链表结构。 结构体可以看做是一种自定义的数据类型,它还有一个很重要的特性,就是结构体可以相互嵌套使用,但也是有条件的,结构体可以包含结构体指针,但绝对不能在结构体中包含结构体变量。struct test { char name[10]; float socre;转载 2006-04-11 10:59:00 · 981 阅读 · 0 评论 -
战30天C++入门极限-C/C++中结构体(struct)知识点强化(6)
最后我学习一下如何在已有的链表上插入节点 我们要考虑四中情况, 1.链表为空! 2.插入点在首节点前 3.插入点找不到的情况我们设置放在最后! 4.插入点在中间的情况! 今天的程序在昨天的基础上做了进一步的修改,可以避免删除点找不到的情况,如果找不到删除点就退出函数!#include iostream> using namespace std; struct tes转载 2006-04-11 11:04:00 · 761 阅读 · 0 评论 -
挑战30天C++入门极限-C/C++中命令行参数的原理
很早以前的dos应用程序中,我们经常会用命令行参数执行应用程序例如:copy c:/1.txt d:/ 在c/c++中,命令行参数的传递是利用main进行形参传递实现的 前面的教程中我们对面都进行了void main()或者是void main(void)的定义,这表示main不返回任何类型,和main不带有任何参数,但在缺剩状态下mian()这样形式下,形式参数一直是存在在栈转载 2006-04-11 10:50:00 · 1221 阅读 · 0 评论 -
挑战30天C++入门极限-C++下的引用类型
引用类型也称别名,它是个很有趣的东西。在c++ 下你可以把它看作是另外的一种指针,通过引用类型我们同样也可以间接的操作对象,引用类型主要是用在函数的形式参数上,通常我们使用它是把类对象传递给一个函数。 引用对象采用类型名加上&符号和名称的方式进行定义。例如:(int &test;),这里我们就定义了一个int类型的名为test 的引用,但是int &test;这样的方式是不能够被编译成功的,转载 2006-04-11 10:28:00 · 583 阅读 · 0 评论 -
挑战30天C++入门极限-c++中函数重载的相关知识
函数重载是用来描述同名函数具有相同或者相似功能,但数据类型或者是参数不同的函数管理操作的称呼! 我们来举一个实际应用中的例子来说明问题:我们要进行两种不同数据类型的和操作为了实现它,在c语言中我们就要写两个不同名称的涵数来进行区分例如:int testa(int a,int b)和float testb(float a,floatb),这样字是没有问题,但是总有一点不好,这么两个具备极其相似操作函转载 2006-04-11 10:31:00 · 904 阅读 · 0 评论 -
挑战30天C++入门极限-C++中的函数重载
我们来举一个实际应用中的例子来说明问题:我们要进行两种不同数据类型的和操作为了实现它,在c语言中我们就要写两个不同名称的涵数来进行区分例如:int testa(int a,int b)和float testb(float a,floatb),这样字是没有问题,但是总有一点不好,这么两个具备极其相似操作函数我们却起两个不同的名字,这样子不是很好管理,所以c++为了方便程序员编写程序特别引入了函数重载转载 2006-04-11 10:34:00 · 642 阅读 · 0 评论 -
挑战30天C++入门极限-C/C++中字符指针数组及指向指针的指针的含义
就指向指针的指针,很早以前在说指针的时候说过,但后来发现很多人还是比较难以理解,这一次我们再次仔细说一说指向指针的指针。 先看下面的代码,注意看代码中的注解:#include iostream> #include string> using namespace std; void print_char(char* array[],int len);//函数原形声明 void转载 2006-04-11 10:37:00 · 654 阅读 · 0 评论 -
战30天C++入门极限-对C++中引用的补充说明(实例一)
#include iostream> #include string> using namespace std; void main(int argc,char* argv[]){ int a=10; int b=20; int &rn=a; cout cout//c++中是无法取得应用的内存地址的,取引用的地址就是取目标的地址!转载 2006-04-11 10:51:00 · 704 阅读 · 0 评论 -
挑战30天C++入门极限-C/C++中函数指针的含义(下)
函数指针同样是可以作为参数传递给函数的,下面我们看个例子,仔细阅读你将会发现它的用处,稍加推理可以很方便我们进行一些复杂的编程工作。//-------------------该例以上一个例子作为基础稍加了修改----------------------------- #include iostream> #include string> using namespace std;转载 2006-04-11 10:52:00 · 640 阅读 · 0 评论 -
挑战30天C++入门极限-对C++中引用的补充说明(实例三)
下面我们再来看一种情况,就是把返回值赋给引用:#include iostream> #include string> using namespace std; float c; float test(float,float); void main(int argc,char* argv[]) { float &pn=test(3.0f,1.2f);//转载 2006-04-11 10:53:00 · 708 阅读 · 0 评论 -
战30天C++入门极限-C/C++中的结构体(2)
下面我们来看一下,结构体变量是如何作为函数参数进行传递的。#include iostream> #include string> using namespace std; struct test { char name[10]; float socre; }; void print_score(test pn)//以结构变量进行传递 {转载 2006-04-11 10:58:00 · 785 阅读 · 0 评论 -
战30天C++入门极限-C/C++中结构体(struct)知识点强化(2)
程序种有两个组成部分 test *create() 和void showl(test *head) 这两个函数,create是用来创建链表的 ,showl是用来显示链表的。 create函数的返回类型是一个结构体指针,在程序调用的时候我们用了showl(create());,而不用引用的目的原因是引导指针是一个全局指针变量,我们不能在showl()内改变它,因为sh转载 2006-04-11 11:01:00 · 674 阅读 · 0 评论 -
战30天C++入门极限-C/C++中结构体(struct)知识点强化(5)
完整代码如下:#include iostream> using namespace std; struct test { int number; float socre; test *next; }; test *head;//创建一个全局的引导进入链表的指针 test *create() { test *ls;//节点指针转载 2006-04-11 11:04:00 · 730 阅读 · 0 评论 -
挑战30天C++入门极限-关于C++中的内联函数(inline)
在c++中,为了解决一些频繁调用的小函数大量消耗栈空间或者是叫栈内存的问题,特别的引入了inline修饰符,表示为内联函数。 可能说到这里,很多人还不明白什么是栈空间,其实栈空间就是指放置程序的局部数据也就是函数内数据的内存空间,在系统下,栈空间是有限的,如果频繁大量的使用就会造成因栈空间不足所造成的程序出错的问题,函数的死循环递归调用的最终结果就是导致栈内存空间枯竭。 下面我们来看一个转载 2006-04-11 10:22:00 · 631 阅读 · 0 评论 -
挑战30天C++入门极限-C++中的const限定修饰符
const修饰符可以把对象转变成常数对象,什么意思呢? 意思就是说利用const进行修饰的变量的值在程序的任意位置将不能再被修改,就如同常数一样使用! 使用方法是:const int a=1;//这里定义了一个int类型的const常数变量a; 但就于指针来说const仍然是起作用的,以下有两点要十分注意,因为下面的两个问题很容易混淆! 我们来看一个如下的例子:#i转载 2006-04-11 10:29:00 · 525 阅读 · 0 评论 -
挑战30天C++入门极限-在C++语言中,关于内联函数(inline)的入门教程
在c++中,为了解决一些频繁调用的小涵数大量消耗栈空间或者是叫栈内存的问题,特别的引入了inline修饰符,表示为内联涵数。 可能说到这里,很多人还不明白什么是栈空间,其实栈空间就是指放置程序的局部数据也就是函数内数据的内存空间,在系统下,栈空间是有限的,如果频繁大量的使用就会造成因栈空间不足所造成的程序出错的问题,涵数的死循环递归调用的最终结果就是导致栈内存空间枯竭。 下面我们来看一个例子 #i转载 2006-04-11 10:32:00 · 597 阅读 · 0 评论 -
挑战30天C++入门极限-C++中堆内存(heap)的概念和操作方法
堆内存是什么呢? 我们知道在c/c++中定义的数组大小必需要事先定义好,他们通常是分配在静态内存空间或者是在栈内存空间内的,但是在实际工作中,我们有时候却需要动态的为数组分配大小,在这里c库中的malloc.h头文件中的malloc()函数就为您解决了问题(bc或者是在老的标准中是alloc.h),它的函数原形是void* malloc(size_t size),在动态开辟的内存中,在使用完后转载 2006-04-11 10:33:00 · 796 阅读 · 0 评论 -
挑战30天C++入门极限-C/C++中字符串常量的不相等性及字符串的Copy
#include iostream> void main(void) { if("test"=="test") { cout } else { cout } } 上面的代码我们测试两个内容为test的字符串常量是否相等,按照常理,应该是相等的,这些在一些过程式语言中会得到相等的结论,但在c转载 2006-04-11 10:36:00 · 751 阅读 · 0 评论 -
战30天C++入门极限-C/C++中的结构体(4)
例程2的效率要远高过例程1的原因主要有以下两处: 第一: 例程1中的test get_score() { test pn; cin>>pn.name>>pn.socre; return pn; } 调用的时候在内部要在栈空间开辟一个名为pn的结构体变量,程序pn的时候又再次在栈内存空间内自动生成了一个临时结构体变量temp,在前面的教程中我们已经说过,它是一个copy,而例程2转载 2006-04-11 11:00:00 · 681 阅读 · 0 评论