Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Assigning char pointer to array

 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();
   }`

Why am I allowed to pass a char pointer and receive it in array,but can not directly assign char pointer to array.As far I know,assignment takes place implicitly when we pass parameters to a function.So why is this difference in behavior?

like image 268
Krrish Raj Avatar asked May 27 '14 17:05

Krrish Raj


1 Answers

The declaration

void fun(char arr[]){  

is equivalent to

void fun(char *arr){  

which means that, in this case, no need of size of character array to be passed to the function. Now arr points to the same location as of ptr. But in case of

char arr2[] = ptr;  

compiler doesn't know about the size of ptr as it is a pointer to first character of string literal hello and hence the compiler fails out to determine the size for array arr2 and it throws the error. You must have to specify the size of array.
The size of character array can be omitted only with the initializer like;

char arr2[] = "Hello World";   

In this case compiler determines the size of array arr2 from the size of string Hello World.

like image 170
haccks Avatar answered Sep 28 '22 06:09

haccks