我有一个函数,它有一个参数' 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指针?
答案 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]);
}
确保在这种情况下尊重数组边界。