首页 文章

C - 将char *分配给char数组

提问于
浏览
0

我有一个函数有一个参数'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指针?

2 回答

  • 0

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

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

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

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

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

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

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

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

相关问题