繁体   English   中英

C-将char *分配给char数组

[英]C - Assigning a char* to a char array

我有一个带有参数'char * argument'的函数,例如:

function(char *x) { ... }

当我调用此函数时,我将一个char数组作为参数传递

function(char_array);

在函数中,我想逐个char迭代数组char的元素,因此我想在函数中创建一个数组,并为其分配函数的参数(即char * x),以便能够迭代数组的元素一个接一个地,但是,我似乎无法执行此分配,并且出现一条错误消息:

incompatible types when assigning to type ‘char[8000]’ from type ‘char *’

所以问题是:如何将char指针分配给char数组?

你不能 但是您可以做的是直接迭代x ,因为可以像数组一样使用指针,就像可以将数组转换为指针一样。 例如

function(char *x)
{
    for(int i = 0; i < 100; i++)
        printf("%d ", x[i]);
}

简短的答案:除非您手动从指针复制内存(否则以某种方式将内存的大小存储到另一个参数或从另一个来源获取它),您将无法这样做。

要保留有关数组的sizeof()的信息,请通过引用将其传递:

void function( const char (&arr)[8000] )

或者,您可以只使用指针来访问数据(同样,如果数组名称衰减为指针)

void function(char* arr) {
    printf("%c", arr[2]);
}

确保在这种情况下遵守数组边界。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM