Wyswietlanie nazy tablicy

0

Witam. Chciałbym, aby funkcja mojego programu wyświetliła mi automatycznie nazwę tablicy, która jest jej argumentem przy wywoływaniu.
Osobiście uważam, że mógłbym to rozwiązać stosując małą tablice w której osobno przechowywałbym nazwy oraz adresy tablic w programie. Ale wydaje mi się to dość łopatologiczne, a zarazem zagmatwane i wydłużyłoby program. Ma ktoś propozycje rozwiązania tego problemu?

...
...
void Wyswietl(double [3][3]);

int main ()
{
double TablicaA[3][3];
...
...
Wyswietl(TablicaA);
...
...
};

void Wyswietl(double X[3][3])
{
	cout<<"Wyswietlam macierz: "<<X<<endl;
    for (int i=0; i<3; i++)
	{
		for (int j=0; j<3; j++)
			cout<<"|\t"<<X[i][j]<<"\t";
		cout<<"|"<<endl;
	}
    cout<<endl;
};


w powyższym kodzie, program wyświetli mi jedynie adres pierwszego elementu TablicaA. Korzystając ze wskaźnika otrzymałbym wartość pierwszego elementu. Oba te rozwiązania niestety nie są zadawalające ;/

0
#include <stdio.h>

#define prn(x) printf("%s=%d\n",#x,x)

int main()
  {
   int a=3,b=9,c=37;
   
   prn(a);
   prn(b);
   prn(c);   
   return 0;
  }
0

Ma ktoś propozycje rozwiązania tego problemu?

Nazwy zmiennych nie są przechowywane przez kompilator w kodzie, natomiast może nazwy pól klasy w jakimś są.
Inaczej pozostaje rozwiązanie @Dragon-a.

0

Prawie dobrze. Gdy zastosuje tą instrukcję, to przy wpisaniu wyświetli mi np a=3. Gdy troszkę ją zmodyfikowałem, wyświetliło a. Niby jest ok. Ale gdy wstawię to do funkcji. i wpiszę prn(X); gdzie X jest tablicą lokalną funkcji, program wyświetla mi X, a powinien nazwę tablicy, która była argumentem przy wywołaniu ;/

0
#define Wyswietl(x) WyswietlNazwa(#x,x)

void WyswietlNazwa(const char *nazwa,double X[3][3])
  {
   cout<<"Wyswietlam macierz: "<<nazwa<<endl;
   for(int y=0;y<3;++y,cout<<"|"<<endl) for (int x=0;x<3;++x) cout<<"|\t"<<X[y][x]<<"\t";
   cout<<endl;
  }
 
int main ()
  {
   double TablicaA[3][3];

   Wyswietl(TablicaA);
   return 0;
  }
0

"Nazwa tablicy jest jednocześnie adresem jej pierwszego elementu" więc nie spodziewałbym się czego innego :P

1 użytkowników online, w tym zalogowanych: 0, gości: 1