[英]Passing a pointer to a char array to a function
我有一个指向这样的char数组的指针。
unsigned char *recvBuf;
recvBuf = (unsigned char *)malloc(sizeof(char)*RECVBUF);
然后,我将其传递给定义为
void setHeader(MyHeader *myHeader, unsigned char *buffer)
将前12个字节复制到结构中
然后我尝试将其传递给另一个函数
Record readRecord(unsigned char *buffer, int *arrayPosition, int buffsize)
但是,当我尝试使用[]访问数组的任何部分时,程序总是变得无响应,其方式与上一函数中使用的方式完全相同。 而且我也可以像这样访问它,然后再将其传递给函数。
想法将不胜感激。
谢谢
编辑:
指针是相同的。
这是第二个功能
我将此代码添加到顶部,并且效果很好
int k = *arrayPosition;
printf("%p \n", buffer);
printf("%c \n", buffer[k]);
这是原始代码,该程序变得无响应adfter i = * arrayposition ...
int i, j;
Record *myRecord;
Resource *myResource;
unsigned char name[255];
unsigned char data[50];
unsigned int offset;
i = *arrayPosition;
while(buffer[i] != '\0')
{
if((buffer[i] & 0xC000) == 0xC000)
{
确实需要更多上下文来协助您,但您所说的话显然没有什么不对劲。
基本:
输入的数据不足以确保导致指针变坏的问题,但是一个不错的选择是使用gdb检查指针在您描述的函数调用之间是否发生了变化。
您是否修改了数组的任何字符? 在这种情况下,应使用*
取消引用指针。
如果调用后不能使用指针,原因可能是:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.