如果通过引用传递数组,为什么要在函数中定义新指针?

时间:2015-12-02 06:43:07

标签: c++ c pointers

数组是通过引用传递的,因为它们是指向索引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 */

1 个答案:

答案 0 :(得分:0)

我认为两者都执行相同的任务,我更喜欢第二种方式:

void convertToUppercase(char sPtr[]);这可能更安全,因为它会阻止sPtr指向函数内的其他位置。