gcc 4.7.2
c89
你好,
函数 GetCallRef(...) 需要一个指向此第三个参数的缓冲区的指针,即 call_id 是我的指针。但是,我不知道将在 call_id 中返回的字符串的长度。此 call_id 将仅在此函数中使用,因此将仅具有本地范围,因此我将仅使用函数中返回的 call_id。
所以我的问题是;可以声明一个指针并传递它吗?
char *call_id = NULL;
或者最好声明一个非常大的数组(因为我不知道大就足够大)
char call_id[1024]
实际功能。
if(GetCallRef(crn, GET_CALLID, call_id) == 0) {
/* use the call id - not used outside of this function */
}
我没有实际功能的源代码,GetCallRef(...)
因为它已关闭。
我猜缓冲区会更好,因为内部函数可以直接复制到该缓冲区中。但是,由于数组衰减为函数参数中的指针,并且我没有传递大小,因为它不是这个函数签名的一部分,它的长度只有 4 个字节。该函数如何知道我的数组有多大?这不可以。
如果我传递一个指针,它可以分配存储字符串值的地址,即并返回它。
call_id = call_reference_id;
所有文件都说缓冲区应该足够大以存储呼叫ID,但没有说明它应该有多大。
非常感谢您的任何建议,