将char指针指定给数组

时间:2014-05-27 17:09:17

标签: c++ arrays pointers

 void fun(char arr[]){
 cout<<arr;//successfully received and printed

 }

main(){


   char *ptr="hello";
   fun(ptr);

   /*
   char arr2[]=ptr;  throws error....initialiser fails to determine size of arr2
   */

   getch();
   }`

为什么我允许传递一个char指针并在数组中接收它,但是不能直接将char指针指向array。据我所知,当我们将参数传递给一个函数时,赋值会隐式发生。所以为什么这个区别行为?

1 个答案:

答案 0 :(得分:8)

声明

void fun(char arr[]){  

相当于

void fun(char *arr){  

这意味着,在这种情况下,不需要将字符数组的大小传递给函数。现在arr指向与ptr相同的位置。但是在

的情况下
char arr2[] = ptr;  

编译器不知道ptr的大小,因为它是指向字符串文字hello的第一个字符的指针,因此编译器无法确定数组{{1}的大小它会抛出错误。您必须指定数组的大小 只有初始化器才能省略字符数组的大小;

arr2

在这种情况下,编译器根据字符串char arr2[] = "Hello World"; 的大小确定数组arr2的大小。

相关问题