Bunun üçün sistem proqramlaşdırmanı örgənmək lazımdır. Linux nüvə hakinq-dən başlaya bilərsiniz.
Çox sağolun Əhməd müəllim izah üçün başa düşdüm hər dəfə kömək edirsiz təşəkkülər 1 də bu incə məqamlar kitablarda ən azınnan hələki oxuduğum kitabda yazılmır bunları mən necə örgənəcəm təcrübə etdikcə ya necə ?
Salam. bu çətin sualdı. Bunu tam başa düşmək biraz təcrübə tələb edir. Bacardığım qədər izah eləməyə çalışacam. Burda iki sual bir - birinin içindədir:
1) Niyə values və &values eyni ünvanı çap edir. Axı biri göstərici, digəri göstəriciyə göstəricidi(ikiqat göstərici)
2) Sizin sual - niyə main -də ünvanlar eynidir, arraySum -da isə fərqli.
2-yə cavab vermək üçün əvvəl 1 -i başa düşməliyik. C-də adi dəyişən , 1qat və 2 qat göstəricilər olur. Misal üçün :
[code] int x, *y, **z;[/code]
Əslində isə bunların 3-ü də tam ədəddir, sadəcə kompilyator bilir ki x-ə yazılan məlumata ancaq qiymət, y-ə yazılan məlumata ancaq ünvan, z-tə yazılan məlumata ünvanın ünvanı kimi yanaşmaq lazımdır. Normalda bu 3 dəyişən yaddaşda int x,y,z; kimi yadda saxlanılır və onların hər birində 5, 12, 234 v.s. kimi ədədlər yerləşir. Ünvanda öz növbəsində bir ədəddir, tam ədəd. Array C-də const pointer -dir. Yəni pointerdi, sadəcə istinad etdiyi ünvan dəyişə bilməz. Buna görə onun qiyməti ilə ünvanı üst-üstə düşür.
Keçək ikinci suala. burda diqqət eləsəz main -də value birbaşa çap olunur, amma arraysum -a parametr kimi ötürülür. Məsələ də elə bundadır. Funksiyaya ötürülən parametr əvvəlcə stekə yerləşdirilir. Funksiyanın daxilində ona ötürülən parametrin ünvanın çap eliyəndə o stekdəki ünvanı çap eliyir.
Cərgələrin yaddaşda yerləşməsi, funksiyaya parametr ötürülməsi, stek v.s. ilə daha ətraflı Programming from ground up kitabından məlumat əldə edə bilərsiniz.