C - 将char *分配给char数组

时间:2014-03-25 22:33:00

标签: c arrays pointers char

我有一个函数,它有一个参数' char *参数',如:

function(char *x) { ... }

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

function(char_array);

在函数中,我想用char迭代数组char的元素,所以我的想法是在函数中创建一个数组,然后分配函数的参数(即char * x),所以我&#39 ;我能够逐个迭代数组的元素,但是,我似乎无法做这个任务,我得到一个错误,上面写着:

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

所以问题是:如何为char数组指定一个char指针?

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

简短的回答:除非你手动从指针中复制内存(并以某种方式将内存大小存储到另一个参数或从其他来源获取),否则你不能这样做。

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

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

或者你只需​​使用指针来访问数据(如果数组名称衰减成指针也是如此)

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

确保在这种情况下尊重数组边界。