C++ C++;比较两个整数值,一个简单值和一个指针
我在c++中有以下函数:C++ C++;比较两个整数值,一个简单值和一个指针,c++,c++11,C++,C++11,我在c++中有以下函数: bool compareThem(int top_limit, int* maximum) { if( top_limit >= maximum ) { cout << "Error, maximum number shown be greater than top_limit."; } } bool compareThem(整数上限,整数*最大值) { 如果(上限>=最大值) { 不
bool compareThem(int top_limit, int* maximum)
{
if( top_limit >= maximum )
{
cout << "Error, maximum number shown be greater than top_limit.";
}
}
bool compareThem(整数上限,整数*最大值)
{
如果(上限>=最大值)
{
不能仅取消引用最大值:
if (top_limit >= *maximum)
// ^
这将比较int
top\u limit
与int
存储在最大值所指向的内存位置的int
这是C++的基础之一,应该在你的入门书中加以说明。
< P >这个代码是什么< /P>
bool compareThem(int top_limit, int* maximum)
{
if( top_limit >= maximum )
正在将top\u limit
整数值与maximum
指针变量内的地址进行比较。若要获取指针指向的变量的值,必须取消对指针变量的引用,这是通过C/C++中的*operator:*maximum
完成的。您可以使用*
和运算符访问由地址(指针)指向的值,并获取某个值在内存中的地址。在您的示例中,您尝试将整数与指针进行比较,我可以想到几种方法(取决于所需的行为):
将整数与指针指向的值进行比较
<> >为了比较两个对象的值,需要检索指针指向的地址的值。要做到这一点,需要使用解引用运算符检索值,然后将其视为整数,考虑以下内容:
bool myFunction(int a, int* pointer_to_b)
{
int b = *pointer_to_b;
return a > b;
// Or the one line: return a > *pointer_to_b;
}
bool myAlmostUselessFunction(int a, int* b)
{
int *address_of_a = &a; //< take the address of a
return address_of_a > b;
}
将指针的地址与整数进行比较
由于地址只是整数,因此可以将整数与指针中存储的地址进行比较,但除非确实需要,否则应避免这样做。请考虑:
bool myBadFunction(int a, int* b)
{
return (int*) a > b;
}
将整数的地址与指针中存储的地址进行比较
我很少遇到将整数与整数地址进行比较的情况,但有时我会遇到将vale地址与特定地址进行比较的代码(但通常会有替代方法,我不推荐使用)。有关如何实现这一点,请参见以下内容
bool myFunction(int a, int* pointer_to_b)
{
int b = *pointer_to_b;
return a > b;
// Or the one line: return a > *pointer_to_b;
}
bool myAlmostUselessFunction(int a, int* b)
{
int *address_of_a = &a; //< take the address of a
return address_of_a > b;
}
bool myAlmostUselessFunction(int a,int*b)
{
int*address_of_a=&a;//<取a的地址
_a>b的返回地址_;
}
这是一个示例代码,由于其复杂性、长度和保密性,无法在此处复制主代码。