关于(char *)强制转换和指针参数的问题
发布网友
发布时间:2022-10-08 19:27
我来回答
共3个回答
热心网友
时间:2023-11-16 19:24
1 ,以为p是个char*型 所以给它复制应该也是char*型
尽管getenv返回char* 这样强制转换只是一个习惯问题 而且是个好习惯
因为很可能一个函数 不知道返回什么类型 这样的话如果没有强制转换就会出错
有了这个习惯 一般就不会犯类型匹配的错误
2 前面是%s 输出一个字符串 所以后面跟指针p
如果是*p 一定只输出第一个字符
热心网友
时间:2023-11-16 19:24
1.(char*)的确在这里是多余的,但是我想有些程序员会有一种习惯这样做,会觉得更代码读起来更清楚一些,以后移植时问题会少一些吧,在这里省略掉完全没有问题
2.这里是要打印一个字符串,只能传入字符串的首地址,也就是p。如果是*p,表示的并不是字符串的值,而是该地址的字符(注意p仅仅是一个字符的指针而已),这个程序中也就是环境变量0S的第一个字符。说得再明白些,用*p只能这样写打印语句:"print("%c", *p);"。
热心网友
时间:2023-11-16 19:25
1.用(char *)强制转换下是为了保证编译一定能通过。
2.因为%s是为了输出一个字符串,它的参数的是一个指针(指向字符串首字母的地址,以\0结束),而不是一个值(*p只是该字符串首字母的值)。