关于(char *)强制转换和指针参数的问题

一段程序如下:
main()
{
char *p;
p=(char *)getenv("OS");
printf("%s",p);
}
问题:
1.getenv的返回值是一个指向字符的指针,为什么还要用(char *)强制转换?
2.printf中的参数为什么用p而不是*p?*p不是指针p所指的内容吗?

1 ,以为p是个char*型 所以给它复制应该也是char*型
尽管getenv返回char* 这样强制转换只是一个习惯问题 而且是个好习惯
因为很可能一个函数 不知道返回什么类型 这样的话如果没有强制转换就会出错
有了这个习惯 一般就不会犯类型匹配的错误
2 前面是%s 输出一个字符串 所以后面跟指针p
如果是*p 一定只输出第一个字符

posted @ 2021-11-06 11:45  贤贤贤sir  阅读(288)  评论(0编辑  收藏  举报