C++中我想让 函数的实参为一个未初始化的参数待用户输入但是系统有警告怎么破?

#include <iostream>
using namespace std;
double one(double n);

int main()
{
double n,m;
double * p;
p=new double;
* p=n;
cout << "please input a number as a circle's 'r:'";
cin >> n;
m=one(n);
cout << "the circle's area is:" << m;
delete p;
return 0;
}

double one(double n)
{
const double PI=3.14;
double s;
s=PI*n*n;
return s;
}
这是我写的....

第1个回答  2017-03-22
可以用二维数组名作为实参或者形参,在被调用函数中对形参数组定义时可以指定所有维数的大小,也可以省略第一维的大小说明,如: void Func(int array[3][10]); void Func(int array[][10]); 二者都是合法而且等价,但是不能把第二维或者更高维的大小省略,如下面的定义是不合法的: void Func(int array[][]); 因为从实参传递来的是数组的起始地址,在内存中按数组排列规则存放(按行存放),而并不区分行和列,如果在形参中不说明列数,则系统无法决定应为多少行多 少列,不能只指定一维而不指定第二维,下面写法是错误的: void Func(int array[3][]);实参数组维数可以大于形参数组,例如实参数组定义为: void Func(int array[3][10]); 而形参数组定义为: int array[5][10]; 这时形参数组只取实参数组的一部分,其余部分不起作用。 对于数组 int p[m][n]; 如果要取p[i][j]的值(i>=0 && i<m && 0<=j && j < n),编译器是这样寻址的,它的地址为: p + i*n + j; void Func(int array[3][10]); void Func(int array[][10]); 变为: void Func(int **array, int m, int n); 在转变后的函数中,array[i][j]这样的式子是不对的(不信,大家可以试一下),因为编译器不能正确的为它寻址,所以我们需要模仿编译器的行为把array[i][j]这样的式子手工转变为: *((int*)array + n*i + j); 在调用这样的函数的时候,需要注意一下,如下面的例子: int a[3][3] = { {1, 1, 1}, {2, 2, 2}, {3, 3, 3} }; Func(a, 3, 3); 根据不同编译器不同的设置,可能出现warning 或者error,可以进行强制转换如下调用: Func((int**)a, 3, 3); 其实多维数组和二维数组原理是一样的,大家可以自己扩充的多维数组,这里不再赘述。写到这里,我先向看了这篇文章后悔的人道歉,浪费你的时间了。下面是一 个完整的例子程序,这个例子程序的主要功能是求一个图中某个顶点到其他顶点的最短路经,图是以邻接矩阵的形式存放的(也就是一个二维数组),其实这个函数 也是挺有用的,但是我们这篇文章的重点在于将二维数组作为函数的参数传递。追问

...你这个太专业了吧,能不能帮我看看我写的程序里 那个主函数中one(n)的问题呢

main函数的参数是实参还是形参
3. main函数的参数类型:在标准的C和C++程序中,main函数的参数通常是两个:一个是int类型的形参,用于接收命令行参数的数量;另一个是char类型的数组或指针的形参,用于接收具体的命令行参数。这些参数在程序运行时由操作系统提供,并通过main函数的参数传递进来。4. 实参和形参的关系:当程序运行时,...

c++中 & 符号的引用用法。
这时,被调函数的形参就成为原来主调函数中的实参变量或对象的一个别名来使用,所以在被调函数中对形参变量的操作就是对其相应的目标对象(在主调函数中)的操作。 (2)使用引用传递函数的参数,在内存中并没有产生实参的副本,它是直接对实参操作;而使用一般变量传递函数的参数,当发生函数调用时,需要给形参分配存储单元...

c++中类内的函数怎么调用
你必须先创建一个bookmanger副本,然后用bookmanger bm;bm.add()或者,bookmanger *bm = new bookmanger();bookmanger->add()调用。如果你一定要用类名来调用,可以定义函数为static:static void bookmanger::add()。函数中的manager拼错了,应该是bookmanager。c++构造函数:C++用以初始化对象的数据...

函数定义时的参数为?函数调用语句中的参数称为?
} void fun(void){ } 但要注意,此时的参数名是“形参”,名字可以随便起,与调用时不必一样,但类型要一样!个数也应该相同。还有各个类型的排列顺序也要一致!例如声明时:int function(float,double);则实现时double类型也要在float类型之后:int function(float f,double d){} 函数实参:函数作...

C++ 中形参中的 *& 是什么意思?
前面的&表示引用,struct stacktype *&s 这条语句就是stacktype指针变量的引用。C++代码里面使用结构体的时候可以省略struct的,最好不要加上struct。 你的这段代码应该是数据结构课本上的吧!

C#能否通过用C++把静态库lib封装到一个dll中的方式实现调用lib中的函 ...
1) 启动Visual C++ 6.0;2) 新建一个“Win32 Dynamic-Link Library”工程,工程名称为“Count”;3) 在“Dll kind”选择界面中选择“A simple dll project”;4) 打开Count.cpp,添加如下代码: \/\/ 导出函数,使用“ _stdcall ” 标准调用 extern "C" _declspec(dllexport)int _stdcall count(int init); int ...

如何定义指向函数的指针?
1、int func(int x); \/* 声明一个函数 *\/ 2、int (*f) (int x); \/* 声明一个函数指针 *\/ 3、f=func; \/* 将func函数的首地址赋给指针f *\/ 二、函数指针的用法:函数指针的应用:(*指针变量名)(参数列表)如:int c=(*ptr)(a,b);\/* 函数指针 的使用*\/ 在C语言中,函数...

JAVA中的一个小问题
另一个需要注意的是第3行没了类型转换。现在,你可能认为我们已经成功地去掉了程序里的混乱。我们用第1行的类型参数取代了第3行的类型转换。然而,这里还有个很大的不同。编译器现在能够在编译时检查程序的正确性。当我们说myIntList被声明为List<Integer>类型,这告诉我们无论何时何地使用myIntList变量,编译器保证其中...

C++中引用(&)的用法和拷贝\/赋值函数的区别
1、引用作为参数引用的一个重要作用就是作为函数的参数。以前的C语言中函数参数传递是值传递,如果有大块数据作为参数传递的时候,采用的方案往往是指针,因为 这样可以避免将整块数据全部压栈,可以提高程序的效率。但是现在(C++中)又增加了一种同样有效率的选择(在某些特殊情况下又是必须的选择),就是引 用。【例2】...

请问C++中的引用符号“&”到底怎么使用?
C++中的引用符号“&”的使用方法是,类型标识符 &引用名=目标变量名。C++是C语言的继承,它可进行过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计。引用(reference)就是C++对C语言的重要扩充。引用就是某一变量(目标)的一个...

相似回答