Wyciąganie wskaźnika do elementu tablicy

0

Napisałem funkcję, która korzystając z tablicy charów, zwraca wskaźnik na ten element tablicy, który jest drugim wystąpieniem znaku 'c'.
Zauważyłem, że wypisując adresy poszczególnych elementów w tablicy one się niczym nie różnią. Dodatkowo wypisuję wartość która nie wiem czym jest, opisałem ją roboczo "a co to jest?:".

Dlaczego adresy poszczególnych elementów tablicy nie różnią się? Dlaczego ta dziwna wartość jest pozostałą częścią łańcucha znaków?

Kod umieściłem tutaj: https://ideone.com/e.js/2YG29a żeby móc go uruchomić należy w prawym górnym roku kliknąć fork, a potem Run.

Na wszelki wypadek dodaję kod tutaj:

#include <iostream>
using namespace std;

void zadanie8(void);
char * znajdz(char *s, char c);

int main() {
	// your code goes here
	zadanie8();
	return 0;
}

void zadanie8(void) {

	//char inbuff[10];
	char inchar;
	char * wynik = NULL;

	cout << "Podaj ciag znakowy do przeszukania: " << endl;
	//cin >> inbuff;
	char inbuff[] = "egeckecle";
	cout << "Podaj wyszukiwany znak: " << endl;
	//cin >> inchar;
	inchar = 'c';
	wynik = znajdz(inbuff, inchar);
	if (wynik != NULL) {
		cout << "Tekst wystepujacy po drugim wystapieniu wyszukiwanego znaku (pierwszy to szukany znak): " << endl;
		cout << wynik << endl;
	}
	else {
		cout << "Nie znaleziono drugieo wystpienia znaku!" << endl;
	}
}

char * znajdz(char *s, char c) {
	char * wynik = NULL;
	int cnt = 0;

	while (*s++ != '\0') {
		cout << "wartosc: " << *s 
		<< "; adres: " << &s 
		<< "; a co to jest?: " << s 
		<< endl;
		if (*s == c) {
			cnt++;
			if (cnt == 2) {
				wynik = s;
				break;
			}
		}
	}
	return wynik;
}
1

Wypisujesz adres wskaźnika, a nie adres elementu tablicy. Ponieważ c-stringi to wskaźniki na pierwszy element tekstu, char* (i podobne) traktowane są jako tekst, dlatego wypisywany jest tekst. Jeśli chcesz wypisać adres, rzutuj na void*: https://ideone.com/tv7FLE

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