У меня есть указатель на мой массив символов, подобный этому.Передача указателя на массив символов функции
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)
Но программа всегда становится невосприимчивой, когда я пытаюсь получить доступ к любой части массива us ing [], точно так же, как это использовалось в предыдущей функции. И я также прекрасно обращаюсь к нему так, как прежде, чем передать его функции.
Идеи были бы высоко оценены.
Благодаря
EDIT:
Указатели одинаковы.
Это внутри второй функции
Я добавил этот код в верхней части, и она работает просто отлично
int k = *arrayPosition;
printf("%p \n", buffer);
printf("%c \n", buffer[k]);
Это исходный код, программа перестает отвечать на запросы adfter я = * 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)
{
Вы уверены, что не изменяете значение указателя внутри одной из функций? Вы разыскиваете указатель при вставке данных? – Jack
Некоторые стилистические проблемы. В C (но не C++) обычно считается, что плохой стиль отличает возвращаемое значение 'malloc', поскольку' void * 'неявно преобразуется в любой другой тип указателя. Кроме того, 'sizeof (char)' всегда 1 в C (и C++), поэтому его умножение избыточно. Вторая строка кода должна быть такой: 'recvBuf = malloc (RECVBUF);'. – bcat
Я думаю, что большинство компиляторов удалит эту избыточность. Иногда он используется для написания более четкого кода: size_of_item * number_of_items – Jack