c – 在return语句中将指针转换为固定大小的数组

前端之家收集整理的这篇文章主要介绍了c – 在return语句中将指针转换为固定大小的数组前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
提出这个问题的最简单方法是使用一些代码
struct Point
{
    int x;
    int y;
    int z;

    int* as_pointer() { return &x; }        // works
    int (&as_array_ref())[3] { return &x; } // does not work   
};

as_pointer编译,as_array_ref不编译.演员似乎是有序的,但我无法弄清楚合适的语法.有任何想法吗?

解决方法

我发现使用typedef更容易处理数组类型:
typedef int ints[3];

然后必须写入as_array_ref,以便& as_array_ref()==& x.

以下语法是可能的:

>从int *到ints的纯C样式转换*:

整型和放大器; as_array_ref(){return *((ints *)(& x)); }
> C风格reinterpret_cast(由@Mike Seymour建议 – 另见他的回答).它通常被认为是C语言中的一种更好的做法:

整型和放大器; as_array_ref(){return * reinterpret_cast< ints *>(& x); }
>来自int& tots&这稍微短一点,但(对我来说)不那么直观:

整型和放大器; as_array_ref(){return reinterpret_cast< ints&>(x); }

猜你在找的C&C++相关文章