为什么不使用引用地址指针进行c ++编译?

我是一名新的计算机科学专业的学生,​​参加了我的第一个C ++课程。 我学到了很多东西,这是我在堆栈交换中的第一篇文章。 我有一个问题,理解我的代码正在发生什么。 我有2个问题。

我会发布我的代码,然后问我的问题。

// This program uses the address of each element in the array. 
#include <iostream>
using namespace std;

int main()
{
    const int NUM_COINS = 5;
    int coins[NUM_COINS] = {5, 1, 25, 5, 10};
    int *p1;        // Pointer to a double.
    int count;                      // Counter variable. 

    // Use the pointer to display the values in the array. 
    cout << "Here are the values in the coins array: n";
    for(count = 0; count << NUM_COINS; count++)
    {
        // Get the address of an array element
        p1 = &coins[count];

        // Display the contents of the element
        cout << *p1;
    }
    cout << endl;
    return 0;
}
  • 所以我的第一个问题是为什么不编译它呢? 我的任何其他简单程序都没有问题。 我在OS X 4.2.1上使用g ++。 我必须键入g ++ -o命令才能编译它,如果不是的话......我得到这些错误:
  • g ++ -c -o 9-8.o 9-8.cpp cc 9-8.o -o 9-8未定义的符号:“std :: basic_ostream>&std :: operator <<

    (std :: basic_ostream>&,char const *)“,引用自:_main in 9-8.o _main in 9-8.o”std :: ios_base :: Init :: Init()“,引用来自: static_initialization_and_destruction_0 (int,int)在9-8.o
    “std :: basic_string,std :: allocator> :: size()const”,引用自std :: __ verify_grouping(char const *,unsigned long,std :: basic_string,std :: allocator> const&)in 9-8 .o“std :: basic_string,std :: allocator :: operator [](unsigned long)const”,引用自:std :: __ verify_grouping(char const *,unsigned long,std :: basic_string,std :: allocator> const& )in 9-8.o std :: __ verify_grouping(char const *,unsigned long,std :: basic_string,std :: allocator> const&)in 9-8.o std :: __ verify_grouping(char const *,unsigned long,std在9-8.o“ _gxx_personality_v0”中引用:std :: __ verify_grouping(char const *,unsigned long,std :: basic_string,std :: allocator> const&)9中的:: basic_string,std :: allocator> const&) -8.o ___ tcf_0 in 9-8.o _main in 9-8.o 9-8.o unsigned long const&std :: min(unsigned long const&,unsigned long const&)9-8.o中的__static_initialization_and_destruction_0(int,int) .o全局构造函数键入mainin 9-8.o CIE in 9-8.o“std :: ios_base :: Init ::〜Init()”,引用来自:___tcf_ 0 in 9-8.o“std :: basic_ostream>&std :: endl(std :: basic_ostream>&)”,引用来自:_main in 9-8.o“std :: basic_ostream :: operator <<(std :: basic_ostream>&(*)(std :: basic_ostream>&))“,引用来自:_main in 9-8.o”std :: basic_ostream :: operator <<(int)“,引用来自:_main in 9 -8.o“std :: cout”,引用来自:_main in 9-8.o _main in 9-8.o _main in 9-8.o ld:symbol(s)not found collect2:ld返回1退出状态make:* [9-8]错误1

    这导致了我的第二个问题。 即使我输入g ++命令,它也会编译,但运行后会输出一个空数组。 所以我的问题#2是:我的代码是否正确? 如何正确使用引用地址语句的指针。

    谢谢。


    原因 :您没有正确使用比较运算符。 将其更改为“<”后,您的代码应该正常工作。

    for(count = 0; count << NUM_COINS; count++)
                         ^ should be "<" here
    

    除了for循环中有一个问题,我没有看到任何问题:

    for(count = 0; count << NUM_COINS; count++)
                       //^^
    

    这不是比较。 这是左移操作。 我相信你不打算这样做。

    这应该是: count < NUM_COINS

    链接地址: http://www.djcxy.com/p/85067.html

    上一篇: why doesn't make work on a c++ compile with a reference address pointer?

    下一篇: c++ mysql sqlstring crashes 0xC0000005 unable to read memory