Coder#
جمعه 07 شهریور 1393, 13:39 عصر
سلام.
وظیفه اشاره گرها اشاره به مقدار مربوطه در متغیر مربوطه است. اشاره گرها حاوی محتویات داخل متغیرها می باشند.
برنامه ای ساده جهت نمایش برخی از رفتارهای اشاره گرها برای برخی از کاربرانی که در این خصوص مشکل دارن نیز آماده کردم.
ممکنه آموزشی برای زبان برنامه نویسی C برای برخی از افراد در روزهای آتی فراهم کنم.
کسانی که مشکلی در فهم برخی از خطها دارن، حتما بیان کنن.
توضیحات در کنار اکثر خطها داده شدن (مطمئنا انگلیسی بلد هستین)، اما در مورد این دستور/تعریف باید بگم: (p7+*p4)* یعنی p7 داره به p4*مین (پی چهارمین) عنصر در متغیر آرایه ای z اشاره می کنه.
بعدا مثال هایی از توابعی که دارای آرگومان (های) اشاره گر هستن می زنم.
من قراره چند روزی به مسافرت برم. اگر سوالی در خصوص برنامه زیر پرسیده شد و اگر من نبودم، کاربران دیگر پاسخ سوال(ها) رو بدن.
ممنون.
#include <stdio.h>
int main ()
{
int x = 16, y = 2, z[6], temp, i, v;
int *p1, *p2, *p3, *p4, *p5[32], *p6[32], *p7;
p1 = &x; /* p1 now point to x. */
p2 = &y; /* p2 now point to y. */
*p1 -= *p2; /* x is now 14. */
z[0] = x; /* z[0] is now 14. */
z[1] = *p2 * ++*p1; /* x is now 15. z[1] is now 30. */
z[2] = y = --*p1 + y; /* x is now 14. y and z[2] are now 16. */
z[3] = (*p2)++; /* z[3] is now 16. y is now 17. */
z[4] = *p2; /* z[4] is now 17. */
z[5] = *(p3 = p1); /* p3 point to what p1 pointed to. z[5] is now 14 (The initialization is equal to: z[5] = *p3;). */
temp = *p1; /* temp contain the value of x */
*p1 = *p2; /* x contain the value of y */
*p2 = temp; /* y contain the value of temp */
printf("x = %i\ny = %i\n", x, y);
printf("z[0] = %i\nz[1] = %i\nz[2] = %i\n", z[0], z[1], z[2]);
printf("z[3] = %i\nz[4] = %i\nz[5] = %i\n\n", z[3], z[4], z[5]);
for (v = 0, i = *p1 + *p2, p7 = &z[0], p4 = &v; v <= i; (*p4)++)
{
p6[*p4] = p5[*p4] = &*p4; /* p5[*p4] point to what *p4 pointed to. p6[*p4] point to p5[*p4]. */
if (*p4 <= 9)
printf("*p4 = %i *p5 = %i *p6 = %i *p7 = %i\n", *p4, *p5[*p4], *p6[*p4], (v <= 5) ? *(p7+*p4) : (*p7 = !*p4));
else
printf("*p4 = %i *p5 = %i *p6 = %i *p7 = %i\n", *p4, *p5[*p4], *p6[*p4], (v <= 5) ? *(p7+*p4) : (*p7 = !*p4));
}
return 0;
}
وظیفه اشاره گرها اشاره به مقدار مربوطه در متغیر مربوطه است. اشاره گرها حاوی محتویات داخل متغیرها می باشند.
برنامه ای ساده جهت نمایش برخی از رفتارهای اشاره گرها برای برخی از کاربرانی که در این خصوص مشکل دارن نیز آماده کردم.
ممکنه آموزشی برای زبان برنامه نویسی C برای برخی از افراد در روزهای آتی فراهم کنم.
کسانی که مشکلی در فهم برخی از خطها دارن، حتما بیان کنن.
توضیحات در کنار اکثر خطها داده شدن (مطمئنا انگلیسی بلد هستین)، اما در مورد این دستور/تعریف باید بگم: (p7+*p4)* یعنی p7 داره به p4*مین (پی چهارمین) عنصر در متغیر آرایه ای z اشاره می کنه.
بعدا مثال هایی از توابعی که دارای آرگومان (های) اشاره گر هستن می زنم.
من قراره چند روزی به مسافرت برم. اگر سوالی در خصوص برنامه زیر پرسیده شد و اگر من نبودم، کاربران دیگر پاسخ سوال(ها) رو بدن.
ممنون.
#include <stdio.h>
int main ()
{
int x = 16, y = 2, z[6], temp, i, v;
int *p1, *p2, *p3, *p4, *p5[32], *p6[32], *p7;
p1 = &x; /* p1 now point to x. */
p2 = &y; /* p2 now point to y. */
*p1 -= *p2; /* x is now 14. */
z[0] = x; /* z[0] is now 14. */
z[1] = *p2 * ++*p1; /* x is now 15. z[1] is now 30. */
z[2] = y = --*p1 + y; /* x is now 14. y and z[2] are now 16. */
z[3] = (*p2)++; /* z[3] is now 16. y is now 17. */
z[4] = *p2; /* z[4] is now 17. */
z[5] = *(p3 = p1); /* p3 point to what p1 pointed to. z[5] is now 14 (The initialization is equal to: z[5] = *p3;). */
temp = *p1; /* temp contain the value of x */
*p1 = *p2; /* x contain the value of y */
*p2 = temp; /* y contain the value of temp */
printf("x = %i\ny = %i\n", x, y);
printf("z[0] = %i\nz[1] = %i\nz[2] = %i\n", z[0], z[1], z[2]);
printf("z[3] = %i\nz[4] = %i\nz[5] = %i\n\n", z[3], z[4], z[5]);
for (v = 0, i = *p1 + *p2, p7 = &z[0], p4 = &v; v <= i; (*p4)++)
{
p6[*p4] = p5[*p4] = &*p4; /* p5[*p4] point to what *p4 pointed to. p6[*p4] point to p5[*p4]. */
if (*p4 <= 9)
printf("*p4 = %i *p5 = %i *p6 = %i *p7 = %i\n", *p4, *p5[*p4], *p6[*p4], (v <= 5) ? *(p7+*p4) : (*p7 = !*p4));
else
printf("*p4 = %i *p5 = %i *p6 = %i *p7 = %i\n", *p4, *p5[*p4], *p6[*p4], (v <= 5) ? *(p7+*p4) : (*p7 = !*p4));
}
return 0;
}