error: assignment of read-only location
c, compiler-errors
Solution
In your function `h` you have declared that `r` is a copy of a constant `Record` -- therefore, you cannot change `r` or any part of it -- it's constant.
Apply the right-left rule in reading it.
Note, too, that you are passing a copy of `r` to the function `h()` -- if you want to modify `r` then you must pass a non-constant pointer.
void h( Record* r)
{
r->x *= 1000;
r->s[0] = 'C';
}
Problem
When I compile this program, I keep getting this error ``` example4.c: In function ‘h’: example4.c:36: error: assignment of read-only location example4.c:37: error: assignment of read-only location ``` I think it has something to do with the pointer. how do i go about fixing this. does it have to do with constant pointers being pointed to constant pointers? code ``` #include <stdio.h> #include <string.h> #include "example4.h" int main() { Record value , *ptr; ptr = &value; value.x = 1; strcpy(value.s, "XYZ"); f(ptr); printf("\nValue of x %d", ptr -> x); printf("\nValue of s %s", ptr->s); return 0; } void f(Record *r) { r->x *= 10; (*r).s[0] = 'A'; } void g(Record r) { r.x *= 100; r.s[0] = 'B'; } void h(const Record r) { r.x *= 1000; r.s[0] = 'C'; } ```