数组是通过引用传递的,因为它们是指向索引0的指针。如果是这种情况,为什么这个程序员将指针char * sPtr定义为函数convertToUppercase()的参数,如果他只能使用char字符串[ ]作为参数并更改函数main中的值。两种方式执行相同的任务还是它们有很大的不同?谢谢!
#include <stdio.h>
#include <ctype.h>
void convertToUppercase(char *sPtr );
int main( void )
{
char string[] = "characters and $32.98"; /* initialize char array */
printf( "The string before conversion is: %s", string );
convertToUppercase( string );
printf( "\nThe string after conversion is: %s\n", string );
return 0;
}
/* convert string to uppercase letters */
void convertToUppercase(char *sPtr)
{
while (*sPtr != '\0' ) { /* current character is not '\0' */
if ( islower( *sPtr))
{
*sPtr = toupper( *sPtr );/* convert to uppercase */
}
++sPtr;
} /* end while */
} /* end function convertToUppercase */
答案 0 :(得分:0)
我认为两者都执行相同的任务,我更喜欢第二种方式:
void convertToUppercase(char sPtr[]);
这可能更安全,因为它会阻止sPtr
指向函数内的其他位置。