读《C++ Builder 5编程实例与技巧简单》中的一个简单问题,20分
我想在机器上运行一下S02A的例子,我在C++builder上运行时显示:Must use C++ for STDCOMP.H
怎么解决?
S02A程序如下:
#include <conio.h>
#include <iostream.h> // 包含流的头文件
// 行参为指向const类型变量的指针
void display_c(const int * pi)
{
cout<<"display_c:"<<*pi<<endl;
}
// 行参为普通类型变量的指针
void display(int * pi)
{
cout <<"display:"<<*pi<<endl ;
}
#pragma hdrstop
#pragma argsused
int main(int argc, char* argv[])
{
// (1) const 类型变量
const int i1=1;
cout<<"i1: "<<i1<<endl;
// 下面一行错误,故屏蔽掉
// i1=3; // 错误:i1的内容不可以改变
// (2) 指向c o n s t类型变量的指针
int i2=2;
const int * pi2=&i2;
cout<<"*pi2: "<<*pi2<<"\ n";
// 下面一行错误,故屏蔽掉
// *pi2=3; // 错误:p i 2指向的内容不可以改变
*(int *)pi2=3; // 用“类型强制转换”可以解除对指针指向内容的约束
cout <<"*(int *)pi2: "<<i2<< endl;
// (3) const指针
int i3=3;
int i4=4;
int * const pi3=&i3;
*pi3=5;
cout<<"i3:"<<i3<<endl;
// 下面一行错误,故屏蔽掉
// pi3=&i4; // 错误:p i 3不可以指向不同的变量
// (4) 指向const内容的const指针
int i5=5;
int i6=6;
const int * const pi5=&i5;
// 下面两行错误,故屏蔽掉
// pi5=&i6; // 错误:p i 5不可以指向不同的变量
// *pi5=7; // 错误:p i 5指向的内容不可以改变
*(int *)pi5=8; // 用“类型强制转换”可以解除对指针指向内容的约束
cout<<"i5:"<<i5<<endl;
// (5) 参数传递时const的限制
display(&i6);
display_c(&i6);
const int i7=7;
// 下面一行错误,故屏蔽掉
// display(&i7); //const类型的数据地址不可以作为实参传递给
// 形参为非const类型指针的函数
display_c(&i7) ; //对于形参为c o n s t类型指针的函数则可以
getch(); // 目的是让用户看清输出的结果
return 0;
}