У вас, кажется, есть некоторые неправильные представления о const, например.
#include <stdio.h>
int main()
{
int a=123, b=456;
const int *pa = &a;
pa = &b; //legal
*pa = 4; //illegal
printf("a=%d\n", a);
return 0;
}
gcc выдаст ошибку, говорящую, что
x.c: In function ‘main’:
x.c:8:9: error: assignment of read-only location ‘*pa’
*pa = 4;
^
для вашей цели, если я правильно понимаю, выследует определить функцию как
const struct userData * getEEPROMDataAtIndex(uint32_t uidIndex);
//this const declare the returned pointer point to something cannot be changed
, а затем, когда вы инициируете свой константный указатель, вызывая эту функцию
const struct userData * const myp = getEEPROMDataAtIndex(index);
// ^ this declare the pointer itself (myp) cannot be changed
Надеюсь, это поможет.