将char指针赋值给数组
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();
}`
为什么我允许传递一个char指针并在数组中接收它,但不能直接将char指针分配给数组?据我所知,当我们向函数传递参数时,赋值是隐式发生的。那么为什么会有这种行为上的差异呢?
声明
void fun(char arr[]){
等价于
void fun(char *arr){
这意味着,在这种情况下,不需要将字符数组的大小传递给函数。现在arr
和ptr
指向相同的位置。但是如果
char arr2[] = ptr;
编译器不知道ptr
的大小,因为它是指向字符串文字hello
的第一个字符的指针,因此编译器无法确定数组arr2
的大小,并抛出错误。你必须指定数组的大小。
字符数组的大小只能通过以下初始化式省略:
char arr2[] = "Hello World";
在本例中,编译器根据字符串Hello World
的大小确定数组arr2
的大小。
相关文章:
- 在 Arduino 中为 2D 指针数组赋值
- 我无法为 2D 数组赋值
- 如何在C++中初始化值,然后稍后为uint32_t数组赋值
- 使用 C++ shell 为 C++ 中的 2 D 动态数组赋值,控制台不会打印出任何内容
- 为两个动态数组赋值
- 在类的构造函数中为常量动态大小的数组赋值
- 为结构灵活数组赋值
- 如何在opencv中为三维数组赋值
- 如何从主函数为对象数组赋值
- 数组赋值无法使用指针语法
- C++类中的静态数组赋值
- 多维字符串数组赋值 C++
- 错误:从初始值设定项列表向数组赋值;在ubuntu 1004上工作但在14.04上不工作的代码
- 用于循环数组赋值的C++.正在返回垃圾邮件
- 多维数组赋值
- 无法在c++中为全局数组赋值
- C++程序在为指针的2D数组赋值后崩溃
- 给指针数组赋值
- c++将整型数组赋值给大小相同的空整型数组
- 将数组赋值给派生对象