相关疑难解决方法(0)

为什么在使用typedef时非const指针被视为const?

typedef char* c;
const c ptr1 = "pointer";
++ptr1; /// error
const char* ptr2 = "pointer";
++ptr2; /// runs fine
Run Code Online (Sandbox Code Playgroud)

现在ptr1应该是类型const char*,因此是非const指针,那么为什么它被视为常量指针?

c pointers const

6
推荐指数
1
解决办法
228
查看次数

typedef with const且没有const限定符

    typedef void* TVPtr;
    typedef const void* CTVPtr;

const TVPtr func3 (const TVPtr p)
{
    return p;
}

const void* func4 (const void* p)
{
    return p;
}

CTVPtr func5 (CTVPtr p)
{
    return p;
}


int main ()
{
    const uint64_t i = 10;

    func3(&i);  // compilation error here
                // cannot convert argument 1 from 'const uint64_t *' 
                // to 'const TVPtr' Conversion loses qualifiers    
    func4(&i);  // no compilation error
    func5(&i);  // no compilation error
    return 0;

}
Run Code Online (Sandbox Code Playgroud)

我不明白为什么有一个错误是一个案例而不是另外两个?

c c++ typedef

0
推荐指数
2
解决办法
572
查看次数

标签 统计

c ×2

c++ ×1

const ×1

pointers ×1

typedef ×1