c++ - 如果数组是通过引用传递的,为什么我们应该在函数中定义一个新的指针?

标签 c++ c pointers

数组是通过引用传递的,因为它们是指向索引 0 的指针。如果是这样的话,为什么这个程序员可以使用 char string [ ] 作为参数并更改函数 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 */

最佳答案

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

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

关于c++ - 如果数组是通过引用传递的,为什么我们应该在函数中定义一个新的指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34036476/

相关文章:

c - 从 SDL 教程构建示例程序时出现 GCC 错误

c - 在函数中使用指针并修改 main()

c++ - 在 C++ 中正确对齐

c++ - 默认情况下不使用 std::next 的 Range-for 循环?

c++ - 混合 monotuch 和 Obj-C 或 C++

c - 如何编译/链接/构建小型可加载内核模块(LKM)?

c - 如何在被调用函数中获取数组的大小?

c++ - 为什么我必须向 poco 的某些方法提供指针而不是 SharedPtr

c - 如何修复警告 : assignment from incompatible pointer type?

c++ - LLVM 教程 --system-libs 不存在