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(整数上限,整数*最大值) { 如果(上限>=最大值) { 不

我在c++中有以下函数:

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的返回地址_;
}

这是一个示例代码,由于其复杂性、长度和保密性,无法在此处复制主代码。