最近在看《c程序设计语言》,就是那本被誉为C语言圣经的书籍。几天看了一章,感触很大,开篇就涉及到很多实用程序,不像谭浩强那样让人深陷语法细节之中,而且学完谭的书感觉什么都不能做。很多问题谭都回避了。所谓专业看看c程序设计语言的代码的风格就能感受到,一种精心雕琢的艺术品。第一章有一个简单的问题,就是把字符串有多个空格的用一个空格代替,自己写了一种,后来看了答案,感觉自己其实把简单的问题复杂化了,这或许就是大牛与我这样菜鸟的差别。下面是我自己的程序.#include<stdio.h>
int main(void)
{
int c;
int count;
while((c=getchar())!=EOF)
{
if(c==' ') count++;
else
{
putchar(c);
count==0;
}
if(count==1) putchar(' ');
}
}
......
在很大程度上,标准C++是标准C的超集.实际上,所有C程序也是C++程序,然而,两者之间有少量区别.下面简要介绍一下最重要的区别.
在C++中,民,局部变量可以在一个程序块内在任何地方声明,在C中,局部变量必须在程序块的开始部分,即在所有"操作"语句之前声明,请注意,C99标准中取消了这种限制.
在C中,按如下方式声明的函数没有对函数变元进行任何说明;
int func();
也就是说,如果没有在函数后面的括孤内指定任何变元,这在C中就意味着对函数变元未做任何声明,该函数可能有变元,也可能没有变元,然而,在C++中,这样的函数声明意味着该函数没有变元,也就是说,在C++中,下面这两个函数声明具有同样的作用:
int func();
int func(void);
在C++中,变元列表中的void是任选的.许多C++程序员使用它们是为了表明函数没有任何变元的,以便于他人理解程序.但是,从技术上说,void不是必须的.
在C++中,所有函数均必须被设计成原型,但这在C中只是一种选择.编程经验表明,在程序中也应该给函数采用原型设计方法.在C与C++之间还存在 ......
在很大程度上,标准C++是标准C的超集.实际上,所有C程序也是C++程序,然而,两者之间有少量区别.下面简要介绍一下最重要的区别.
在C++中,民,局部变量可以在一个程序块内在任何地方声明,在C中,局部变量必须在程序块的开始部分,即在所有"操作"语句之前声明,请注意,C99标准中取消了这种限制.
在C中,按如下方式声明的函数没有对函数变元进行任何说明;
int func();
也就是说,如果没有在函数后面的括孤内指定任何变元,这在C中就意味着对函数变元未做任何声明,该函数可能有变元,也可能没有变元,然而,在C++中,这样的函数声明意味着该函数没有变元,也就是说,在C++中,下面这两个函数声明具有同样的作用:
int func();
int func(void);
在C++中,变元列表中的void是任选的.许多C++程序员使用它们是为了表明函数没有任何变元的,以便于他人理解程序.但是,从技术上说,void不是必须的.
在C++中,所有函数均必须被设计成原型,但这在C中只是一种选择.编程经验表明,在程序中也应该给函数采用原型设计方法.在C与C++之间还存在 ......
C/C++
/*
* File: main.cpp
* Author: Vicky
*
* Created on 2010年4月29日, 上午9:46
*/
#include <iostream>
using namespace std;
int maximum(int[], int);
int main(int argc, char** argv) {
// int sg[3][4] = {
int sg[][4] = {
{68, 77, 73, 86},
{87, 96, 78, 89},
{90, 70, 81, 86}
};
int row = (sizeof (sg) / sizeof (int)) / (sizeof (sg[0]) / sizeof (int)); // 3行
int row2 = sizeof (sg[0]) / sizeof (int); // 4列
cout << row << endl; // 3
cout << row2 << endl; // 3
int max = 0;
for (int i = 0; i < row; i++) {
for (int j = 0; j < row2; j++) {
cout << sg[i][j] << "\t";
if(max < sg[i][j])
max = sg[i][j];
}
cout<<endl;
}
cout<<"the max grade is : "<<max<<endl;
cout << "the max grade is : "
<< maximum(&sg[0][0], 3 * 4) //传递第 ......
C/C++
/*
* File: main.cpp
* Author: Vicky
*
* Created on 2010年4月29日, 上午9:46
*/
#include <iostream>
using namespace std;
int maximum(int[], int);
int main(int argc, char** argv) {
// int sg[3][4] = {
int sg[][4] = {
{68, 77, 73, 86},
{87, 96, 78, 89},
{90, 70, 81, 86}
};
int row = (sizeof (sg) / sizeof (int)) / (sizeof (sg[0]) / sizeof (int)); // 3行
int row2 = sizeof (sg[0]) / sizeof (int); // 4列
cout << row << endl; // 3
cout << row2 << endl; // 3
int max = 0;
for (int i = 0; i < row; i++) {
for (int j = 0; j < row2; j++) {
cout << sg[i][j] << "\t";
if(max < sg[i][j])
max = sg[i][j];
}
cout<<endl;
}
cout<<"the max grade is : "<<max<<endl;
cout << "the max grade is : "
<< maximum(&sg[0][0], 3 * 4) //传递第 ......
C/C++
/*
* File: main.cpp
* Author: Vicky
*
* Created on 2010年4月29日, 上午9:46
*/
#include <iostream>
using namespace std;
int maximum(int[], int);
int main(int argc, char** argv) {
// int sg[3][4] = {
int sg[][4] = {
{68, 77, 73, 86},
{87, 96, 78, 89},
{90, 70, 81, 86}
};
int row = (sizeof (sg) / sizeof (int)) / (sizeof (sg[0]) / sizeof (int)); // 3行
int row2 = sizeof (sg[0]) / sizeof (int); // 4列
cout << row << endl; // 3
cout << row2 << endl; // 3
int max = 0;
for (int i = 0; i < row; i++) {
for (int j = 0; j < row2; j++) {
cout << sg[i][j] << "\t";
if(max < sg[i][j])
max = sg[i][j];
}
cout<<endl;
}
cout<<"the max grade is : "<<max<<endl;
cout << "the max grade is : "
<< maximum(&sg[0][0], 3 * 4) //传递第 ......
#include <assert.h> //设定插入点
#include <ctype.h> //字符处理
#include <errno.h> //定义错误码
#include <float.h> //浮点数处理
#include <fstream.h> //文件输入/输出
#include <iomanip.h> //参数化输入/输出
#include <iostream.h> //数据流输入/输出
#include <limits.h> //定义各种数据类型最值常量
#include <locale.h> //定义本地化函数
#include <math.h> //定义数学函数
#include <stdio.h> //定义输入/输出函数
#include <stdlib.h> //定义杂项函数及内存分配函数
#include <string.h> //字符串处理
#include <strstrea.h> //基于数组的输入/输出
#include <time.h> //定义关于时间的函数
#include <wchar.h> //宽字符处理及输入/输出
#include <wctype.h> ......
#include <assert.h> //设定插入点
#include <ctype.h> //字符处理
#include <errno.h> //定义错误码
#include <float.h> //浮点数处理
#include <fstream.h> //文件输入/输出
#include <iomanip.h> //参数化输入/输出
#include <iostream.h> //数据流输入/输出
#include <limits.h> //定义各种数据类型最值常量
#include <locale.h> //定义本地化函数
#include <math.h> //定义数学函数
#include <stdio.h> //定义输入/输出函数
#include <stdlib.h> //定义杂项函数及内存分配函数
#include <string.h> //字符串处理
#include <strstrea.h> //基于数组的输入/输出
#include <time.h> //定义关于时间的函数
#include <wchar.h> //宽字符处理及输入/输出
#include <wctype.h> ......
前言 不断有网友将编译器 GCC 误认为 IDE(集成开发环境)
期望脱离命令行
期望能在菜单中发现其身影
期望其能有一个集编辑编译链接调试运行于一体的界面
故本文给大家简单罗列一些 C/C++ 编程中可用的 IDE,或许你从中可以找一个你喜欢的。
为避免以下某个软件安装时不自动安装 build-essential 不妨先执行:
sudo apt-get install build-essential
anjuta Anjuta DevStudio 的官方地址:http://anjuta.sourceforge.net/
Anjuta是一个C/C++ IDE,它最大的特色是灵活,同时打开多个文件,内嵌代码级的调试器(调用gdb),应用程序向导(Application widzards)可以方便的帮助你创建GNOME程序而不需要你自己写一些与你兴趣无关的代码。
安装方法:
sudo apt-get install anj ......
前言 不断有网友将编译器 GCC 误认为 IDE(集成开发环境)
期望脱离命令行
期望能在菜单中发现其身影
期望其能有一个集编辑编译链接调试运行于一体的界面
故本文给大家简单罗列一些 C/C++ 编程中可用的 IDE,或许你从中可以找一个你喜欢的。
为避免以下某个软件安装时不自动安装 build-essential 不妨先执行:
sudo apt-get install build-essential
anjuta Anjuta DevStudio 的官方地址:http://anjuta.sourceforge.net/
Anjuta是一个C/C++ IDE,它最大的特色是灵活,同时打开多个文件,内嵌代码级的调试器(调用gdb),应用程序向导(Application widzards)可以方便的帮助你创建GNOME程序而不需要你自己写一些与你兴趣无关的代码。
安装方法:
sudo apt-get install anj ......
extern c的作用【转】
2009-12-18 13:10
1.引言
C++语言的创建初衷是“a better C”,但是这并不意味着C++中类似C语言的全局变量和函数所采用的编译和连接方式与C语言完全相同。作为一种欲与C兼容的语言,C++保留了一部分过程 式语言的特点(被世人称为“不彻底地面向对象”),因而它可以定义不属于任何类的全局变量和函数。但是,C++毕竟是一种面向对象的程序设计语言,为了支 持函数的重载,C++对全局函数的处理方式与C有明显的不同。
2.从标准头文件说起
某企业曾经给出如下的一道面试题:
面试题
为什么标准头文件都有类似以下的结构?
#ifndef __INCvxWorksh
#define __INCvxWorksh
#ifdef __cplusplus
extern "C" {
#endif
/*...*/
#ifdef __cplusplus
}
#endif
#endif /* __INCvxWorksh */
分析
显然,头文件中的编译宏“#ifndef __INCvxWorksh、#defi ......