- #include <stdio.h> 
- #include <string.h> 
- #include <stddef.h> 
-   
- struct my_type_t { 
-     int x; 
-     int y; 
-     int z; 
- }; 
-   
- struct my_array_t { 
-     struct my_type_t test; 
-     int otherstuff; 
- }; 
-   
- void somefunction(struct my_array_t *arrayofstructs, size_t offset, int value) { 
-     int i; 
-     for (i = 0; i < 5; i++) { 
-         //Unfortunatly can't do straight assignment not a lvalue 
-         //if you just want to use the member as a rvalue (basically not assignment) can do so normally 
-         memcpy((((void *)&- arrayofstructs [- i ]- . test) +-  offset ), &- value , sizeof(- value ));
 
-     } 
- } 
- int main(void) { 
-     struct my_array_t arrayofstructs[5]; 
-     somefunction (- arrayofstructs , offsetof(struct-  my_type_t ,-  x ), 1);
-     somefunction (- arrayofstructs , offsetof(struct-  my_type_t ,-  y ), 2);
-     somefunction (- arrayofstructs , offsetof(struct-  my_type_t ,-  z ), 3);
-   
-     int i; 
-     for(i = 0; i<5; i++) { 
-         printf("Struct %d: X = %d, Y = %d, Z = %d\n",- i ,- arrayofstructs [- i ]- . test- . x-  \ 
 
-                                                       ,arrayofstructs[i].test.y \  
-                                                       ,arrayofstructs[i].test.z); 
-     } 
-   
-     return 0; 
- } 
-   
-   
				I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KI2luY2x1ZGUgPHN0ZGRlZi5oPgoKc3RydWN0IG15X3R5cGVfdCB7CiAgICBpbnQgeDsKICAgIGludCB5OwogICAgaW50IHo7Cn07CgpzdHJ1Y3QgbXlfYXJyYXlfdCB7CiAgICBzdHJ1Y3QgbXlfdHlwZV90IHRlc3Q7CiAgICBpbnQgb3RoZXJzdHVmZjsKfTsKCnZvaWQgc29tZWZ1bmN0aW9uKHN0cnVjdCBteV9hcnJheV90ICphcnJheW9mc3RydWN0cywgc2l6ZV90IG9mZnNldCwgaW50IHZhbHVlKSB7CiAgICBpbnQgaTsKICAgIGZvciAoaSA9IDA7IGkgPCA1OyBpKyspIHsKICAgICAgICAvL1VuZm9ydHVuYXRseSBjYW4ndCBkbyBzdHJhaWdodCBhc3NpZ25tZW50IG5vdCBhIGx2YWx1ZQogICAgICAgIC8vaWYgeW91IGp1c3Qgd2FudCB0byB1c2UgdGhlIG1lbWJlciBhcyBhIHJ2YWx1ZSAoYmFzaWNhbGx5IG5vdCBhc3NpZ25tZW50KSBjYW4gZG8gc28gbm9ybWFsbHkKICAgICAgICBtZW1jcHkoKCgodm9pZCAqKSZhcnJheW9mc3RydWN0c1tpXS50ZXN0KSArIG9mZnNldCksICZ2YWx1ZSwgc2l6ZW9mKHZhbHVlKSk7CiAgICB9Cn0KaW50IG1haW4odm9pZCkgewogICAgc3RydWN0IG15X2FycmF5X3QgYXJyYXlvZnN0cnVjdHNbNV07CiAgICBzb21lZnVuY3Rpb24oYXJyYXlvZnN0cnVjdHMsIG9mZnNldG9mKHN0cnVjdCBteV90eXBlX3QsIHgpLCAxKTsKICAgIHNvbWVmdW5jdGlvbihhcnJheW9mc3RydWN0cywgb2Zmc2V0b2Yoc3RydWN0IG15X3R5cGVfdCwgeSksIDIpOwogICAgc29tZWZ1bmN0aW9uKGFycmF5b2ZzdHJ1Y3RzLCBvZmZzZXRvZihzdHJ1Y3QgbXlfdHlwZV90LCB6KSwgMyk7CiAgICAKICAgIGludCBpOwogICAgZm9yKGkgPSAwOyBpPDU7IGkrKykgewogICAgICAgIHByaW50ZigiU3RydWN0ICVkOiBYID0gJWQsIFkgPSAlZCwgWiA9ICVkXG4iLGksYXJyYXlvZnN0cnVjdHNbaV0udGVzdC54IFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLGFycmF5b2ZzdHJ1Y3RzW2ldLnRlc3QueSBcIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsYXJyYXlvZnN0cnVjdHNbaV0udGVzdC56KTsKICAgIH0KCiAgICByZXR1cm4gMDsKfQoK
				
				
				
				
				
			 
			
				
			
			
				
	
		
		
	
	
		Struct 0: X = 1, Y = 2, Z = 3
Struct 1: X = 1, Y = 2, Z = 3
Struct 2: X = 1, Y = 2, Z = 3
Struct 3: X = 1, Y = 2, Z = 3
Struct 4: X = 1, Y = 2, Z = 3