¿Cuál es la dirección base y la dirección de memoria de la matriz?

aquí:

dirección base :

Una dirección base es una ubicación única en el almacenamiento primario (o memoria principal) que sirve como punto de referencia para otras ubicaciones de memoria llamadas direcciones absolutas.

Para obtener una dirección absoluta, se agrega un valor de desplazamiento específico (o desplazamiento) a la dirección base. En el almacenamiento primario, todas las direcciones comprenden literalmente secuencias de bits de longitud fija que representan números enteros positivos generalmente expresados ​​en forma hexadecimal. Por ejemplo, una dirección base puede indicar el comienzo de un programa cargado en el almacenamiento primario. La dirección absoluta de cada instrucción de programa individual podría especificarse agregando un desplazamiento a la dirección base.

El nombre de la matriz es la dirección base.

#include

vacío principal()
{
char s [] = “gato”;
int i;

para (i = 0; s [i]; i ++)
printf (“\ n% c% c% c% c”, s [i], * (s + i), * (i + s), i [s]);
}

Responder –
cccc
aaaa
tttt

Explicacion:
El nombre de la matriz es la dirección base de la matriz, aquí ‘s’ contiene la dirección base de una matriz.
‘i’ es el número de índice / desplazamiento desde la dirección base.
La matriz arr [i] se puede representar como –
arr [i] = * (nombre de matriz + desplazamiento)
= * (arr + i)
= Valor en (nombre de matriz + desplazamiento)
= Valor en (Dirección base + Desplazamiento)
Del mismo modo, podemos concluir que:
s [i] = * (s + i)
i [s] = * (i + s)
Considere el ejemplo anterior con un ejemplo práctico, supongamos que tenemos una matriz que tiene la dirección inicial 1000

Ahora, en este caso, la matriz ‘s’ representa una matriz de caracteres, por lo que podemos decir que ‘s’ contiene una dirección base de una matriz de caracteres.
Representación Explicación Expresión Valor
s [i] Primer elemento de la matriz * (s + 1) ‘a’
i [s] Primer elemento de la matriz * (s + 1) ‘a’
* (s + i) Primer elemento de la matriz * (s + 1) ‘a’
* (i + s) Primer elemento de la matriz * (s + 1) ‘a’

Cálculo de la dirección de memoria en una matriz :

Cálculo de direcciones en una (una) matriz de dimensiones:

La matriz de un elemento de una matriz dice “A [I]” se calcula utilizando la siguiente fórmula:

Dirección de A [I] = B + W * (I – LB)

Dónde,
B = Dirección base
W = Tamaño de almacenamiento de un elemento almacenado en la matriz (en bytes)
I = Subíndice del elemento cuya dirección se encuentra
LB = Límite inferior / Límite inferior del subíndice, si no se especifica, suponga 0 (cero)

Ejemplo:

Dada la dirección base de una matriz B [1300… ..1900] como 1020 y el tamaño de cada elemento es de 2 bytes en la memoria. Encuentre la dirección de B [1700] .

Solución:

Los valores dados son: B = 1020, LB = 1300, W = 2, I = 1700

Dirección de A [I] = B + W * (I – LB)

= 1020 + 2 * (1700-1300)
= 1020 + 2 * 400
= 1020 + 800
= 1820 [Ans]

Cálculo de dirección en doble (dos) matriz dimensional: –

Mientras se almacenan los elementos de una matriz 2-D en la memoria, se les asignan ubicaciones de memoria contiguas. Por lo tanto, una matriz 2-D debe ser linealizada para permitir su almacenamiento. Hay dos alternativas para lograr la linealización: Row-Major y Column-Major.

La dirección de un elemento de cualquier matriz dice ” A [I] [J] ” se calcula en dos formas como se indica a continuación:
(1) Sistema principal de fila (2) Sistema principal de columna

Sistema principal de filas:

La dirección de una ubicación en Row Major System se calcula utilizando la siguiente fórmula:

Dirección de A [I] [J] = B + W * [N * (I – Lr) + (J – Lc)]

Sistema principal de columna:

La dirección de una ubicación en el sistema principal de columna se calcula utilizando la siguiente fórmula:

Dirección de la columna A [I] [J] Major Wise = B + W * [(I – Lr) + M * (J – Lc)]

Dónde,
B = Dirección base
I = Subíndice de fila del elemento cuya dirección se encuentra
J = subíndice de columna del elemento cuya dirección se encuentra
W = Tamaño de almacenamiento de un elemento almacenado en la matriz (en bytes)
Lr = Límite inferior del índice de la fila / fila de inicio de la matriz, si no se da por supuesto, suponga 0 (cero)
Lc = Límite inferior de la columna / índice de la columna de inicio de la matriz, si no se da por supuesto, suponga 0 (cero)
M = Número de fila de la matriz dada
N = Número de columna de la matriz dada

Importante: por lo general, se proporciona el número de filas y columnas de una matriz (como A [20] [30] o A [40] [60]) pero si se da como A [Lr- – – – – Ur, Lc- – – – – Uc] . En este caso, el número de filas y columnas se calcula utilizando los siguientes métodos:

El número de filas ( M ) se calculará como = (Ur – Lr) + 1
El número de columnas ( N ) se calculará como = (Uc – Lc) + 1

Y el resto del proceso seguirá siendo el mismo que el requerido (Row Major Wise o Column Major Wise).

Ejemplos:

Q 1 . Una matriz X [-15 ……… .10, 15 …………… 40] requiere un byte de almacenamiento. Si la ubicación inicial es 1500, determine la ubicación de X [15] [20].

Solución:

Como puede ver aquí, el número de filas y columnas no se da en la pregunta. Entonces se calculan como:

Número o filas dicen M = (Ur – Lr) + 1 = [10 – (- 15)] +1 = 26
Número o columnas dicen N = (Uc – Lc) + 1 = [40 – 15)] +1 = 26

(i) Cálculo de la columna principal sabio de la ecuación anterior

Los valores dados son: B = 1500, W = 1 byte, I = 15, J = 20, Lr = -15, Lc = 15, M = 26

Dirección de A [I] [J] = B + W * [(I – Lr) + M * (J – Lc)]

= 1500 + 1 * [(15 – (-15)) + 26 * (20-15)] = 1500 + 1 * [30 + 26 * 5] = 1500 + 1 * [160] = 1660 [Respuesta]

(ii) Cálculo de la fila mayor sabio de la ecuación anterior

Los valores dados son: B = 1500, W = 1 byte, I = 15, J = 20, Lr = -15, Lc = 15, N = 26

Dirección de A [I] [J] = B + W * [N * (I – Lr) + (J – Lc)]

= 1500 + 1 * [26 * (15 – (-15))) + (20-15)] = 1500 + 1 * [26 * 30 + 5] = 1500 + 1 * [780 + 5] = 1500 + 785
= 2285 [Resp.]

de la fuente: -Cálculo de la dirección de memoria en una matriz

El nombre de la matriz C es la dirección base – c4learn.com

¿Qué es la dirección base? – Definición de WhatIs.com

La matriz es un conjunto de elementos consecutivos, es decir, todos los elementos de la matriz se almacenan en ubicaciones de memoria consecutivas.
Consideremos un ejemplo de matriz entera en C.
int a [4];
Consideremos que la dirección inicial de esta matriz en la memoria es 1000. Este valor 1000 no es más que la dirección del primer elemento de esta matriz, por lo tanto, la dirección base. Por lo tanto, la dirección base es la dirección del primer elemento de la matriz. Consideremos que int es de 4 bytes, entonces
Dirección de a [0] = 1000
Dirección de a [1] = 1004
Dirección de a [2] = 1008
Dirección de a [3] = 1012
A partir de los números anteriores, puede calcular fácilmente la fórmula para calcular la dirección de memoria de un elemento individual simplemente conociendo la dirección base y el ancho de cada elemento de una matriz.
Espero que ahora pueda comprender la diferencia entre la dirección base y la dirección de memoria. Gracias por el A2A.

Dirección base significa la ubicación del primer elemento de la matriz en la memoria.

La dirección de memoria de cualquier elemento implica la ubicación particular en la memoria donde se almacena el elemento.

Si su pregunta es sobre la dirección de memoria de la matriz, la dirección de memoria y la dirección base de una matriz son lo mismo. Pero si está preguntando la dirección de memoria de un elemento de una matriz, entonces podemos calcular la dirección de memoria del elemento con la ayuda de la dirección base.

Una matriz es una estructura de datos homogénea, lo que significa que podemos almacenar un tipo similar de datos en una matriz particular. Cuando hablamos en términos de una matriz, siempre implica que cada elemento ocupa la misma cantidad de espacio de memoria en la matriz. Cada matriz se identifica con la ayuda de la dirección base de la matriz. Básicamente, la dirección base ayuda a identificar la dirección de todos los elementos de la matriz.

si consideramos una matriz A con n elementos, tamaño de cada elemento de la matriz de y bytes. Nuevamente, si consideramos el caso cuando el recuento de la matriz comienza desde 0 (como en el caso del lenguaje C), el último elemento de la matriz se escribe como A [n-1] (ya que comenzamos el recuento de la matriz desde 0).

ahora volviendo a la dirección de memoria de un elemento, consideremos que el elemento está en la ubicación x de la matriz.

A [x} = dirección inicial de la matriz + (el número de elementos anteriores al elemento x) * (tamaño de cada elemento)

si suponemos una matriz A que contiene 50 elementos, la dirección inicial de la matriz es 10764H (H es para hexadecimal) y el tamaño de cada elemento es de 2 bytes, y tenemos la intención de encontrar la A [21] y consideramos que el recuento de matriz comienza desde 0 Entonces, para llegar a A [21], necesitamos contar el arreglo para que sea 22 (ya que comenzamos a contar desde 0 en lugar de 1)

A [21] = 10764+ (22 * 2) = 10764 + 44 = 10808H

Si conocemos la ubicación de la memoria de un elemento en particular, podemos ir directamente a esa ubicación, lo cual es muy útil cuando utilizamos la variable de puntero.