السلام عليكم
كيف الحال يا إخوه
عندي مشكله في العميات على المؤشرات و أريد توضيحها لو سمحتم:
#include <stdio.h>
#include <stdlib.h>
void reverse(char*, char*);
int main(void){
char* from = "hello";
char* to = malloc(sizeof(char*));
printf("MAIN start: %p\n", to);
reverse(from, to);
printf("MAIN end: %p\n", to);
getchar();
return 0;
}
void reverse(char* str, char* ret){
printf("FUN start: %p\n", ret);
ret++;
printf("FUN end: %p\n", ret);
}و الناتج هو:
MAIN start: 003E3E00 FUN start: 003E3E00 FUN end: 003E3E01 MAIN end: 003E3E00
و السؤال هو, لماذا عندما جعلت المؤشر يشير إلى خانة الذاكره التالية في الدالة reverse لم يؤثر ذلك على المؤشر الذي بال main , هل هذا له علاقة بال call by value ؟
نرجو الإفاده