PDA

View Full Version : علت تغییر مقدار متغییر



NIMA_1981
یک شنبه 01 اسفند 1389, 21:57 عصر
سلام

دوستان میشه بگید چرا در این سورس کد متغییر i تغییر میکنه


#include <stdio.h>
int main() {
char c1,c2;
int i=9;
char *pc;
int *ps;
c1='p';
c2='2';
ps=&i;
pc=(char*)ps;
printf("%d\n",i);
*pc=c1;
printf("%d\n",i);
pc++;
*pc=c2;
printf("%d\n",i);
}



بعنی دقیقا بعد از این خط مقدار اون عوض میشه
*pc=c1;

حامد مصافی
یک شنبه 01 اسفند 1389, 22:08 عصر
ادرس i در ps ذخیره می‌شود
سپس pc برابر با ps میشود، لذا pc به همان جایی اشاره می‌کند که psیعنی به محتویات i
لذا اگر محتویات آدرس pc را تغییر دهید همان i را تغییر داده‌ایم

NIMA_1981
یک شنبه 01 اسفند 1389, 23:18 عصر
فقط یه سوال دیگه برای من پیش میاد -هیج جا i برابر به متغییر دیگه نشده -متغییر های ps و pc همیشه مقدار دهی میشن -پس جرا مقدار i تغییر میکنه

66635

این خروجی برنامه هستش میشه بگید این اعداد از کجا میاد و جی هستن

NIMA_1981
یک شنبه 01 اسفند 1389, 23:34 عصر
اقا شرمنده من خنگ شده بودم مشکل از اینجا بود

printf("%c\n",i)

مرسی فهمیدم