参数转换:(正常)指向void指针的指针,需要强制转换吗?

 东营市第一中学李芳 发布于 2023-02-12 12:49

当分配到void-pointer 或从-pointer 分配时,不需要强制转换(C99§6.3.2.2sub 1/§6.5.16.1sub 1).将(例如int- )指针传递给期望void-pointer 的函数时,这也是正确的吗?

例如:

void foo(void * p){
    // Do something
}

int main(){
    int i = 12;
    foo(&i); // int * to void *: no cast needed?
}

当我使用GCC(4.8.1,MinGW-32)编译它时,我既没有错误也没有警告(使用-Wall&-pedantic).

与此答案相反,建议此调用需要强制转换(以消除-Wformat警告):

int main(){
    int i = 12;
    printf("%p\n", &i);
}

但就我而言,海湾合作委员会并没有抱怨.

那么:将非void指针传递给期望void-pointer 的函数时需要进行强制转换吗?

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有