C Pointer

#include <stdio.h>
#include <stdlib.h>
 
int arraySum(int array[], const int n){
    int sum = 0, * ptr;
   
    int * const arrayEnd = array + n;
 
    printf("%p\n", array); // show 0028FEF8
    printf("%p\n", &array); // show 0028FEE0
 
    printf("------------------\n");
 
    for(ptr = array; ptr < arrayEnd; ++ptr)
         sum += *ptr;
   
 
    return sum;
}
 
 
int main(){
    int values[10] = { 3, 7, -9, 3, 6, -1, 7, 9, 1, -5 };
    // but here same address show 0028FEF8
    printf("%p\n",values); // show 0028FEF8
    printf("%p\n",&values); //show 0028FEF8
    printf("----------------------\n");
 
 
   // printf("%p\n", ptr);
 
 
    printf ("The sum is %i\n", arraySum (values, 10));
 
    return 0;
}

salam bu kodda əsas məqsədi başa düşmüşəm amma 1 az belə deyək oynadıgdan sonra kodnan belə 1 şey gördüm array və &array funksiyadan kənarda yəni main funksiyya daxilində eyni adresi gösdərir məsələn 0028FEF8 adresin(commentdə yazmışam) amma funksiyya daxilində (arraySum) fərqli məsələn array – 0028FEF8 &array – 0028FEE0 adreslərin gösdərillər bunun səbəbi nədi ? qabagcadan təşəkkürlər


Yadda saxlama
Kateqoriya: Sual . . Qısa keçid.

Verilmiş cavablar və yazılan şərhlər (3 cavab var)

(20:57, 12/11/2016 ) #65937

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 :

  int x, *y, **z;

Ə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.

Cavablamaq üçün sağ sütundan hesaba daxil olmaq lazımdır

(23:34, 12/11/2016 ) #65940

Ç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ə ?

Cavablamaq üçün sağ sütundan hesaba daxil olmaq lazımdır

(19:13, 13/11/2016 ) #65970

Bunun üçün sistem proqramlaşdırmanı örgənmək lazımdır. Linux nüvə hakinq-dən başlaya bilərsiniz.

Cavablamaq üçün sağ sütundan hesaba daxil olmaq lazımdır

Bu suala aid öz sualım var:
Sual verin
Bu suala cavab vermək istəyirəm:
Cavab verin

Cavab verin


Cavab yazmaq üçün lütfən sağ sütundan və ya buradan hesaba daxil olun.

Üzvlər üçün giriş

Qeydiyyat

Elan qutusu

Son cavablar və şərhlər

Cənab cavab verdi - Almanca söz bazası yığmaq (14 saat əvvəl)

rdrobert cavab verdi - Mikrofon süngərinə yazı (1 gün əvvəl)

rdrobert cavab verdi - Yerli virtual olaraq dost tapmaq platforması (1 gün əvvəl)

rdrobert cavab verdi - Almanca söz bazası yığmaq (1 gün əvvəl)

rdrobert cavab verdi - Playstation 4 almaq, Playsation klub açmaq (1 gün əvvəl)

rdrobert cavab verdi - Proqramistin ixtsasi hansidir? (1 gün əvvəl)

Software Developer cavab verdi - Azercell Kabinetim aplikasiyasında İstəSən tarifi haqqında (3 gün əvvəl)

Software Developer cavab verdi - Proqramistin ixtsasi hansidir? (3 gün əvvəl)

byshako cavab verdi - Google Azərbaycan nömrələrini qəbul etmir (13 gün əvvəl)

rdrobert cavab verdi - Honeygain, passiv gelir (14 gün əvvəl)

rdrobert cavab verdi - Xaricdən telefon getirmek (14 gün əvvəl)

rdrobert cavab verdi - Google Azərbaycan nömrələrini qəbul etmir (14 gün əvvəl)

rdrobert cavab verdi - AliExpress, Telefon, Rüsum (14 gün əvvəl)

MiMov cavab verdi - Özəl ip tv qurmaq (22 gün əvvəl)

MiMov cavab verdi - iptv onlayn paket almaq (22 gün əvvəl)

Software Developer - 615 xal

E. Hacı - 607 xal

Onar Alili - 526 xal

Dilsuz - 448 xal

Cabbarov Sübhan - 434 xal

Maqa - 346 xal

Ruslan Butdayev - 328 xal

Namiq Bəndəli - 297 xal

U.Tarlan - 244 xal

Meherremoff - 234 xal

Sistemə daxil olmuş 23233 sualdan 92%-dən çoxu cavablandırılmışdır.

Proyekt haqqında

E-Haci.net istehsalı. © 2010-2024