C/C++中结构体(struct)知识点强化(三)
出处:PConline 2005年03月07日 作者:管宁 责任编辑:xietaoming
我们以上面的程序为基础,但为了我们方便学习删除我们休整结构体为
struct test
{
int number;
float socre;
test *next;
};
number为唯一的编号每一个节点的。
删除的我就不多说了,里面重要部分有注解。
特别注意deletel函数的参数意义,指针的引用在这里很重要,如果只是指针,或者只是应用都是不行的,为什么仔细思考,很多知名的教材在这一问题上都很模糊,而且很多书还有错误,程序不错,但思路是错的,我这里特别不说,请大家仔细阅读程序,如果还是有问题,可以回此帖,我会回答的。
完整代码如下:
#include <iostream>
using namespace std;
struct test
{
int number;
float socre;
test *next;
};
test *head;//创建一个全局的引导进入链表的指针
test *create()
{
......
C/C++中结构体(struct)知识点强化(三)
出处:PConline 2005年03月07日 作者:管宁 责任编辑:xietaoming
我们以上面的程序为基础,但为了我们方便学习删除我们休整结构体为
struct test
{
int number;
float socre;
test *next;
};
number为唯一的编号每一个节点的。
删除的我就不多说了,里面重要部分有注解。
特别注意deletel函数的参数意义,指针的引用在这里很重要,如果只是指针,或者只是应用都是不行的,为什么仔细思考,很多知名的教材在这一问题上都很模糊,而且很多书还有错误,程序不错,但思路是错的,我这里特别不说,请大家仔细阅读程序,如果还是有问题,可以回此帖,我会回答的。
完整代码如下:
#include <iostream>
using namespace std;
struct test
{
int number;
float socre;
test *next;
};
test *head;//创建一个全局的引导进入链表的指针
test *create()
{
......
C/C++中结构体(struct)知识点强化(四)
出处:PConline 2005年03月07日 作者:管宁 责任编辑:xietaoming
http://pcedu.pconline.com.cn/empolder/gj/c/0503/567942_5.html
最后学习一下如何在已有的链表上插入节点
我们要考虑四中情况,
1.链表为空!
2.插入点在首节点前
3.插入点找不到的情况我们设置放在最后!
4.插入点在中间的情况!
今天的程序在昨天的基础上做了进一步的修改,可以避免删除点找不到的情况,如果找不到删除点就退出函数!
#include <iostream>
using namespace std;
struct test
{
int number;
float socre;
test *next;
};
test *head;//创建一个全局的引导进入链表的指针
test *create()
{
test *ls;//节点指针
test *le;//链尾指针
ls = new t ......
C/C++中结构体(struct)知识点强化(四)
出处:PConline 2005年03月07日 作者:管宁 责任编辑:xietaoming
http://pcedu.pconline.com.cn/empolder/gj/c/0503/567942_5.html
最后学习一下如何在已有的链表上插入节点
我们要考虑四中情况,
1.链表为空!
2.插入点在首节点前
3.插入点找不到的情况我们设置放在最后!
4.插入点在中间的情况!
今天的程序在昨天的基础上做了进一步的修改,可以避免删除点找不到的情况,如果找不到删除点就退出函数!
#include <iostream>
using namespace std;
struct test
{
int number;
float socre;
test *next;
};
test *head;//创建一个全局的引导进入链表的指针
test *create()
{
test *ls;//节点指针
test *le;//链尾指针
ls = new t ......
extern "C" {
#include "lua.h"
#include "lualib.h"
#include "lauxlib.h"
}
#include <iostream>
#include <string>
using namespace std;
int main()
{
//Lua示例代码
char *szLua_code =
"r = string.gsub(c_Str, c_Mode, c_Tag) --宿主给的变量 "
"u = string.upper(r)";
//Lua的字符串模式
char *szMode = "(%w+)%s*=%s*(%w+)";
//要处理的字符串
char *szStr = "key1 = value1 key2 = value2";
//目标字符串模式
char *szTag = "<%1>%2</%1>";
  ......
前面一篇我们介绍了结构体,这篇终于能够介绍函数了。为什么这么说呢?因为函数非常重要。就这么简单。嘿嘿!之所以在这时才讲函数,是因为本篇将联系到前面的每一篇,这样函数才能体现的透彻。那我们就迫不及待的切入正题。
从第一篇Helloworld开始到现在,就没有脱离函数。那就是我们的main函数。main函数也是一个普通的函数,只不过通常把它作为我们写的程序的入口。也就是说我们就当它最先执行。那这样一来为什么说它又是一个普通的函数呢?原因是我们可以通过写代码改变这个入口。让我们的程序一开始不执行main函数而先执行我们自定义的函数。具体怎么实现不是本篇的内容,大家知道有这么回事便可。记得main函数并不是一个特殊的函数,它只是被认为的定为程序的入口函数而已。
那么,什么是函数?通俗的理解,它就是一段代码块,被我们将零散的语句集中在一起而用于支持某个功能。比如我们的strcpy也是一个函数,这个函数的作用是字符串拷贝。它里面有很多语句。这些语句被用一个函数的形式集中在一起而已。说到这里又不得不强调一点,那就是我们在接触一个新的东西的时候尽量往其本质想,这样便不会感到抽象和陌生。就比如函数,我们就理解它就是一个代码块集中管理的 ......
前面一篇我们介绍了结构体,这篇终于能够介绍函数了。为什么这么说呢?因为函数非常重要。就这么简单。嘿嘿!之所以在这时才讲函数,是因为本篇将联系到前面的每一篇,这样函数才能体现的透彻。那我们就迫不及待的切入正题。
从第一篇Helloworld开始到现在,就没有脱离函数。那就是我们的main函数。main函数也是一个普通的函数,只不过通常把它作为我们写的程序的入口。也就是说我们就当它最先执行。那这样一来为什么说它又是一个普通的函数呢?原因是我们可以通过写代码改变这个入口。让我们的程序一开始不执行main函数而先执行我们自定义的函数。具体怎么实现不是本篇的内容,大家知道有这么回事便可。记得main函数并不是一个特殊的函数,它只是被认为的定为程序的入口函数而已。
那么,什么是函数?通俗的理解,它就是一段代码块,被我们将零散的语句集中在一起而用于支持某个功能。比如我们的strcpy也是一个函数,这个函数的作用是字符串拷贝。它里面有很多语句。这些语句被用一个函数的形式集中在一起而已。说到这里又不得不强调一点,那就是我们在接触一个新的东西的时候尽量往其本质想,这样便不会感到抽象和陌生。就比如函数,我们就理解它就是一个代码块集中管理的 ......
C语言提供一种特殊的运算符——逗号运算符。用它将两个表达式连接起来。如:
3+5,6+8
称为逗号表达式,又称为“顺序求值运算符”。逗号表达式的一般形式为:
表达式1,表达式2
逗号表达式的求解过程是:先求解表达式1,再求解表达式2。整个逗号表达式的值是表达式2的值。例如,上面的逗号表达式“3+5,6+8”的值为14。又如,逗号表达式
a=3*5,a*4
对此表达式的求解,读者可能会有两种不同的理解:一种认为“3*5,a*4” 是一个逗号表达式,先求出此逗号表达式的值, 如果a的原值为3,则逗号表达式的值为12,将12赋给a, 因此最后a的值为12。另一种认为:“a=3*5”是一个赋值表达式”,“a*4”是另一个表达式,二者用逗号相连,构成一个逗号表达式。这两者哪一个对呢?赋值运算符的优先级别高于逗号运算符, 因此应先求解a=3*5(也就是把“a=3*5”作为一个表达式)。经计算和赋值后得到a的值为15,然后求解a*4,得60。整个逗号表达式的值为60。
一个逗号表达式又可以与另一个表达式组成一个新的逗号表达式,如(a=3*5,a*4),a+5 先计算出a的值 ......
VIM+GDB linux c/c++ 的编程利器
http://blog.csdn.net/jackyvan/archive/2010/01/15/5193693.aspx
其实VIM也能把编译 调试集成在一起,像是一个IDE一样。
首先现在VIM的源码,因为要集成调试环境的话需要重新编译VIM才行,所以我们不如重新安装一个。
VIM的现在地址:
http://www.vim.org/sources.php
然后下载VIMGDB,这是vim的集成调试环境的一个重要插件程序。
地址:http://sourceforge.net/projects/clewn/files/vimGdb/ ,选择对应的VIM版本下载。
把下载下来的文件都放到 ~/install/中
然后:
cd ~/install/
tar xjf vim-7.2.tar.bz2
tar xzf vimgdb72-1.14.tar.gz
patch -d vim72 --backup -p0 < vimgdb/vim72.diff
这样就解压出vim和vimgdb,并对vim的configure文件自动做了调整
接下来:
cd ~/install/vim72
make
make install
就装好vim了。
然后:
cd ~/install/vimgdb
mkdir ~/.vim
tar zxf vimgdb_runtime.tgz -C ~/.vim/
这样就装好了,接下来启动vim
先把vimgdb的帮助导进去
:helptags ~/.vim/doc
这样就可以
:help vimgdb 来看vimgdb的帮助了
这样 我们先打开一个c程序
并且为这个程序写好一个Makefile文 ......
VIM+GDB linux c/c++ 的编程利器
http://blog.csdn.net/jackyvan/archive/2010/01/15/5193693.aspx
其实VIM也能把编译 调试集成在一起,像是一个IDE一样。
首先现在VIM的源码,因为要集成调试环境的话需要重新编译VIM才行,所以我们不如重新安装一个。
VIM的现在地址:
http://www.vim.org/sources.php
然后下载VIMGDB,这是vim的集成调试环境的一个重要插件程序。
地址:http://sourceforge.net/projects/clewn/files/vimGdb/ ,选择对应的VIM版本下载。
把下载下来的文件都放到 ~/install/中
然后:
cd ~/install/
tar xjf vim-7.2.tar.bz2
tar xzf vimgdb72-1.14.tar.gz
patch -d vim72 --backup -p0 < vimgdb/vim72.diff
这样就解压出vim和vimgdb,并对vim的configure文件自动做了调整
接下来:
cd ~/install/vim72
make
make install
就装好vim了。
然后:
cd ~/install/vimgdb
mkdir ~/.vim
tar zxf vimgdb_runtime.tgz -C ~/.vim/
这样就装好了,接下来启动vim
先把vimgdb的帮助导进去
:helptags ~/.vim/doc
这样就可以
:help vimgdb 来看vimgdb的帮助了
这样 我们先打开一个c程序
并且为这个程序写好一个Makefile文 ......
VIM+GDB linux c/c++ 的编程利器
http://blog.csdn.net/jackyvan/archive/2010/01/15/5193693.aspx
其实VIM也能把编译 调试集成在一起,像是一个IDE一样。
首先现在VIM的源码,因为要集成调试环境的话需要重新编译VIM才行,所以我们不如重新安装一个。
VIM的现在地址:
http://www.vim.org/sources.php
然后下载VIMGDB,这是vim的集成调试环境的一个重要插件程序。
地址:http://sourceforge.net/projects/clewn/files/vimGdb/ ,选择对应的VIM版本下载。
把下载下来的文件都放到 ~/install/中
然后:
cd ~/install/
tar xjf vim-7.2.tar.bz2
tar xzf vimgdb72-1.14.tar.gz
patch -d vim72 --backup -p0 < vimgdb/vim72.diff
这样就解压出vim和vimgdb,并对vim的configure文件自动做了调整
接下来:
cd ~/install/vim72
make
make install
就装好vim了。
然后:
cd ~/install/vimgdb
mkdir ~/.vim
tar zxf vimgdb_runtime.tgz -C ~/.vim/
这样就装好了,接下来启动vim
先把vimgdb的帮助导进去
:helptags ~/.vim/doc
这样就可以
:help vimgdb 来看vimgdb的帮助了
这样 我们先打开一个c程序
并且为这个程序写好一个Makefile文 ......