这是什么意思(C++):"警告:指向算术[Wpointer-arith]中使用的函数的指针"?

Dyl*_*ere 1 c++ arrays compiler-warnings

我正在制作一个C++程序,我有一个不断出现的警告(我正在使用g ++):

warning: pointer to a function used in arithmetic [Wpointer-arith]
Run Code Online (Sandbox Code Playgroud)

我想知道:这条警告信息到底意味着什么?什么是我的编译器试图告诉我问题(一般而言)所以我可以更好地理解我做错了什么?

谷歌搜索为人们的代码中的特定问题提供了具体的解决方案,但从未告诉我这条警告信息的确切含义.

我正在学习数组,我正在尝试制作一个打印"Hello,world!"的程序.一次一个字符,每个字符单独存储在一个数组中,并在for循环中泵送到cout.

这是代码:

#include <iostream>
using namespace std;

int ARRAY_ELEMENTS = 14;

void greeting()
{
    char greeting[ARRAY_ELEMENTS];
    greeting[0] = 'H';
    greeting[1] = 'e';
    greeting[2] = 'l';
    greeting[3] = 'l';
    greeting[4] = 'o';
    greeting[5] = ',';
    greeting[6] = ' ';
    greeting[7] = 'w';
    greeting[8] = 'o';
    greeting[9] = 'r';
    greeting[10] = 'l';
    greeting[11] = 'd';
    greeting[12] = '!';
    greeting[13] = '\0';
}
int main(int argc, char* argv[])
{
    greeting();
    for (ARRAY_ELEMENTS = 0; 
        ARRAY_ELEMENTS <= 13;
        ARRAY_ELEMENTS++)
    {
        cout << greeting[ARRAY_ELEMENTS] << endl;
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

感谢您的时间.

Smi*_*Smi 6

在这一行:

cout << greeting[ARRAY_ELEMENTS] << endl;
Run Code Online (Sandbox Code Playgroud)

你指的是功能命名greeting,你处理就好像它是一个数组.


Jas*_*onD 5

greeting是一个函数,但是您尝试将其打印为char型数组。函数greeting()包含相同名称的char数组对代码的清晰度没有帮助-这可能是您感到困惑的地方。如果给事物赋予不同的名称,那么出问题的地方就会更加明显。

您需要让greeting()函数返回某些内容,而不是仅填充本地数组,否则无法从函数外部访问该数组(无论如何,函数返回后将立即丢弃该数组)。