Krr*_*Raj 5 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();
}`
Run Code Online (Sandbox Code Playgroud)
为什么我被允许传递一个char指针并在数组中接收它,但是不能直接将char指针指向array.据我所知,当我们将参数传递给一个函数时,赋值会隐式发生.所以为什么这种行为不同?
声明
void fun(char arr[]){
Run Code Online (Sandbox Code Playgroud)
相当于
void fun(char *arr){
Run Code Online (Sandbox Code Playgroud)
这意味着,在这种情况下,不需要将字符数组的大小传递给函数.现在arr指向相同的位置ptr.但是如果是的话
char arr2[] = ptr;
Run Code Online (Sandbox Code Playgroud)
编译器不知道大小,ptr因为它是指向字符串文字的第一个字符的指针hello,因此编译器无法确定数组的大小arr2,它会抛出错误.您必须指定数组的大小.
只有初始化器才能省略字符数组的大小;
char arr2[] = "Hello World";
Run Code Online (Sandbox Code Playgroud)
在这种情况下,编译器根据arr2字符串的大小确定数组的大小Hello World.