2016-06-28 15 views
-1

Я создал простой двумерный массив в C и передал указатель на функцию сборки. Я хотел обработать элементы из этого массива с помощью функции сборки. Моя проблема в том, что я не понимаю (возможно, это моя ошибка), почему адреса элементов в одной строке не отличаются одним и тем же числом. Я хочу обрабатывать все элементы в Assembly, но поскольку адреса отличаются либо на 4 или 6 долларов, я не знаю, как это сделать.Сборка 2-мерной матрицы, почему адреса не отличаются тем же номером

Adres 1156660110 Adres 1156660114 Adres 1156660120 Adres 1156660124 Adres 1156660130 Adres 1156660134 Adres 1156660140 Adres 1156660144 Adres 1156660150 Adres 1156660154 Adres 1156660160 Adres 1156660164 Adres 1156660170 Adres 1156660174 Adres 1156660200  

Adres 1156660210 Adres 1156660214 Adres 1156660220 Adres 1156660224 Adres 1156660230 Adres 1156660234 Adres 1156660240 Adres 1156660244 Adres 1156660250 Adres 1156660254 Adres 1156660260 Adres 1156660264 Adres 1156660270 Adres 1156660274 Adres 1156660300  

Adres 1156660310 Adres 1156660314 Adres 1156660320 Adres 1156660324 Adres 1156660330 Adres 1156660334 Adres 1156660340 Adres 1156660344 Adres 1156660350 Adres 1156660354 Adres 1156660360 Adres 1156660364 Adres 1156660370 Adres 1156660374 Adres 1156660400  

Adres 1156660410 Adres 1156660414 Adres 1156660420 Adres 1156660424 Adres 1156660430 Adres 1156660434 Adres 1156660440 Adres 1156660444 Adres 1156660450 Adres 1156660454 Adres 1156660460 Adres 1156660464 Adres 1156660470 Adres 1156660474 Adres 1156660500  

Adres 1156660510 Adres 1156660514 Adres 1156660520 Adres 1156660524 Adres 1156660530 Adres 1156660534 Adres 1156660540 Adres 1156660544 Adres 1156660550 Adres 1156660554 Adres 1156660560 Adres 1156660564 Adres 1156660570 Adres 1156660574 Adres 1156660600  

Adres 1156660610 Adres 1156660614 Adres 1156660620 Adres 1156660624 Adres 1156660630 Adres 1156660634 Adres 1156660640 Adres 1156660644 Adres 1156660650 Adres 1156660654 Adres 1156660660 Adres 1156660664 Adres 1156660670 Adres 1156660674 Adres 1156660700  

Adres 1156660710 Adres 1156660714 Adres 1156660720 Adres 1156660724 Adres 1156660730 Adres 1156660734 Adres 1156660740 Adres 1156660744 Adres 1156660750 Adres 1156660754 Adres 1156660760 Adres 1156660764 Adres 1156660770 Adres 1156660774 Adres 1156661000  

Adres 1156661010 Adres 1156661014 Adres 1156661020 Adres 1156661024 Adres 1156661030 Adres 1156661034 Adres 1156661040 Adres 1156661044 Adres 1156661050 Adres 1156661054 Adres 1156661060 Adres 1156661064 Adres 1156661070 Adres 1156661074 Adres 1156661100  

Adres 1156661110 Adres 1156661114 Adres 1156661120 Adres 1156661124 Adres 1156661130 Adres 1156661134 Adres 1156661140 Adres 1156661144 Adres 1156661150 Adres 1156661154 Adres 1156661160 Adres 1156661164 Adres 1156661170 Adres 1156661174 Adres 1156661200  

Adres 1156661210 Adres 1156661214 Adres 1156661220 Adres 1156661224 Adres 1156661230 Adres 1156661234 Adres 1156661240 Adres 1156661244 Adres 1156661250 Adres 1156661254 Adres 1156661260 Adres 1156661264 Adres 1156661270 Adres 1156661274 Adres 1156661300  

Adres 1156661310 Adres 1156661314 Adres 1156661320 Adres 1156661324 Adres 1156661330 Adres 1156661334 Adres 1156661340 Adres 1156661344 Adres 1156661350 Adres 1156661354 Adres 1156661360 Adres 1156661364 Adres 1156661370 Adres 1156661374 Adres 1156661400  

Adres 1156661410 Adres 1156661414 Adres 1156661420 Adres 1156661424 Adres 1156661430 Adres 1156661434 Adres 1156661440 Adres 1156661444 Adres 1156661450 Adres 1156661454 Adres 1156661460 Adres 1156661464 Adres 1156661470 Adres 1156661474 Adres 1156661500  

Adres 1156661510 Adres 1156661514 Adres 1156661520 Adres 1156661524 Adres 1156661530 Adres 1156661534 Adres 1156661540 Adres 1156661544 Adres 1156661550 Adres 1156661554 Adres 1156661560 Adres 1156661564 Adres 1156661570 Adres 1156661574 Adres 1156661600  

Adres 1156661610 Adres 1156661614 Adres 1156661620 Adres 1156661624 Adres 1156661630 Adres 1156661634 Adres 1156661640 Adres 1156661644 Adres 1156661650 Adres 1156661654 Adres 1156661660 Adres 1156661664 Adres 1156661670 Adres 1156661674 Adres 1156661700  

Adres 1156661710 Adres 1156661714 Adres 1156661720 Adres 1156661724 Adres 1156661730 Adres 1156661734 Adres 1156661740 Adres 1156661744 Adres 1156661750 Adres 1156661754 Adres 1156661760 Adres 1156661764 Adres 1156661770 Adres 1156661774 Adres 1156662000  

И код в C

#include <stdlib.h> 
#include <stdio.h> 
#define BOK 15 
extern int suma(int ** wsk, int); 

int main() 
{ 
    int i, k, licznik = 0; 
    int** wsk = malloc(BOK * sizeof(int*)); 

    for(i = 0; i < BOK; ++i) 
    { 
    wsk[i] = malloc(BOK * sizeof(int)); 
    } 


    for(i = 0; i < BOK; ++i) 
    { 
    for(k = 0; k < BOK; ++k) 
    { 
     wsk[i][k] = licznik; 
     ++licznik; 

     printf("%d\t", wsk[i][k]); 
    } 

    printf("\n"); 
    } 

    for(i=0; i< BOK; i++) 
    { 
    for(k=0; k< BOK; k++) 
    { 
     printf("Adres %o\t", &wsk[i][k]); 
    } 
    printf("\n"); 
    } 
    printf("Suma is: %d\n", suma(wsk, BOK)); 

    for(i = 0; i < BOK; ++i) 
    { 
    free(wsk[i]); 
    } 
    free(wsk); 

    return 0; 
} 
+1

Используйте 'printf (« Адрес% p \ t », (void *) & wsk [i] [k])' – 2501

ответ

6

Они отличаются тем же, а именно 4 байта.

Вы используете "%o" как строку формата для printf() по какой-либо причине, которая является восьмеричной.

Как указано 2501, используйте "%p" для печати значений указателя (в шестнадцатеричном формате).