注册 登录
编程论坛 C++教室

遇到问题:用另一个指针除指针的sizeof值

aaa99999 发布于 2020-09-23 16:58, 7135 次点击
程序代码:
#include "mp.h"
    void maopao(int mp[])
    {
        int  a = (sizeof(mp) / sizeof(mp[0]));
        cout << "冒泡前的数列" << endl;
        for (int num0 = 0; num0 < a; num0++)
        {
            cout << mp[num0] << " ";
        }
        cout << endl;
        for (int j = 0; j < a - 1; j++)
        {
            for (int i = 0; i < a - j - 1; i++)
            {
                if (mp[i] > mp[i + 1])
                {
                    int temp = mp[i];
                    mp[i] = mp[i + 1];
                    mp[i + 1] = temp;
                }
            }
        }
        cout << "冒泡后的数列:" << endl;
        for (int num = 0; num < a; num++)
        {
            cout << mp[num] << " ";
        }
        cout << endl;
    }

大佬们,这个函数中第三行警告用另一个值除指针的sizeof值,是怎么回事?
2 回复
#2
Nictheboy2020-09-23 17:43
错误的详细信息?
#3
Jonny02012020-09-23 22:33
int [] 在函数参数这里会退化成 int *
要想在参数里面放数组, C++ 里可以这么干 :
template <size_t N>
void maopao(int (&arr)[N]);

这样就可以计算数组大小了了
如果一定要用 int [], 那么只能再加多一个参数, 用于表示数组大小 :
void mappao(int arr[], size_t size);
1