Tablice
Tworzenie tablicy const tab1 = ; const tab2 = ; const a = "pies"; const b = 1024; const c = "buda"; const tab3 = ; Metody wykorzystywane w pracy z tablicami push() – dodaje element/y
Wskaźnik jest to zmienna w programie, która nie przechowuje wartości, ale adres w pamięci, gdzie ta wartość się znajduje.
Jak wiadomo, cały kod programu oraz wartości zmiennych użytych w programie, są przechowywane w pamięci komputera. Z kolei pamięć komputerowa składa się z rekordów, a każdy rekord posiada swój unikalny adres (numer). Kiedy procesor chce odczytać wartość jakiejś zmiennej zapisanej w programie, to robi to odczytując wartość komórki pamięci gdzie ta zmienna jest przechowywana.
Tworzenie wskaźników w języku C++ odbywa się za pomocą gwiazdki *
. Tworząc nowy wskaźnik najlepiej jest mu od razu przypisać pustą wartość. Unikniemy w ten sposób przechowywania we wskaźniku przypadkowej wartości. W przypadku wskaźników będzie to zawartość przypadkowej komórki pamięci. Tworzenie i inicjowanie wskaźników zerem:
int *wskaznik1 = 0;
double *wskaznik2 = NULL;
Z kolei odczytywanie wskaźnika, a więc odczytywanie adresu, odbywa się poprzez & (ampersand). Przykład tworzenia i odczytywania wskaźników:
#include <iostream>
int main()
{
int x = 5;
std::cout << x << '\n'; // wypisz wartość zmiennej x
std::cout << &x << '\n'; // wypisz adres pamięci, gdzie jest zapisana zmienna x
return 0;
}
Powyższy kod zwróci dwie liczby. Pierwsza to zawsze będzie liczba 5, natomiast druga liczba to adres pamięci gdzie znajduje się zmienna 5, a więc na każdym komputerze będzie to inna wartość. Należy również pamiętać, że adres komórki pamięci jest podawany w postaci liczby szesnastkowej poprzedzonej prefiksem 0x. Przykładowo liczba szesnastkowa 0x6dfefc jest równa liczbie dziesiętnej 7 208 700.
Jeśli wskaźniki przechowują adres w pamięci, gdzie znajduje się wartość zmiennej, to czy to oznacza, że wszystkie wskaźniki mają typ całkowity bez znaku? Odpowiedź na to pytanie jest krótka: nie. Wskaźnik musi mieć taki sam typ jak zmienna, na którą wskazuje. Przeanalizujmy poniższy kod:
int zmiennaInt = 5; // deklaracje zmiennych
double zmiennaDouble= 7.0;
int *wskaznikNaInt = &zmiennaInt; // deklaracje wskaźników i przypisaniem im wartości
double *wskaznikNaDouble = &zmiennaDouble;
int *wskaznikNaInt2 = &zmiennaDouble; // źle
double *wskaznikNaDouble2 = &zmiennaInt ; // źle
Dwie pierwsze linie deklarują zmienne typu int
i double
, dwie kolejne deklarują wskaźniki na te zmienne. Z kolei w dwóch ostatnich liniach próbujemy przypisać wskaźnikowi na zmienną całkowitą adres zmiennej typu double
i na odwrót. Taka operacja jest niemożliwa.
Przekazując wskaźnik jako argument funkcji powodujemy, że zmiana wartości zmiennej wskazywanej przez ten wskaźnik wewnątrz funkcji, spowoduje zmianę wartości zmiennej poza funkcją. Przykład:
#include<iostream>
using namespace std;
void zamien(int *a, int *b)
{
int pom = *a;
*a = *b;
*b = pom;
}
int main()
{
int a, b;
cout << "Podaj liczbę a: ";
cin >> a;
cout << "Podaj liczbę b: ";
cin >> b;
zamien(&a, &b); //do funkcji przekazujemy adresy zmiennych
cout << "Liczby a i b zostały zamienione: a = " << a << ", b = " << b;
return 0;
}
Dozwolone jest również tworzenie tablic wskaźnikowych zawierających adresy komórek pamięci.
#include <iostream>
using namespace std;
const int MAX = 3;
int main () {
int tab[MAX] = {10, 100, 200};
int *ptr[MAX];
for (int i = 0; i < MAX; i++) {
ptr[i] = &tab[i];
}
for (int i = 0; i < MAX; i++) {
cout << "Wartosc tab[" << i << "]\t= " << *ptr[i] << endl;
cout << "Adres tab[" << i << "]\t= " << &ptr[i] << endl;
}
return 0;
}
Słowo 'Wlazł' znajduje się w komórce pamięci pod adresem 0x6dfed0
2019-01-02 12:41:37 2020-04-27 11:48:56
Tworzenie tablicy const tab1 = ; const tab2 = ; const a = "pies"; const b = 1024; const c = "buda"; const tab3 = ; Metody wykorzystywane w pracy z tablicami push() – dodaje element/y
Instrukcja if if (warunek1) { // kod, który się wykona, gdy warunek1 będzie prawdziwy } else if (warunek2) { // kod, który się wykona, gdy warunek2 będzie prawdziwy } else { // ko
Tablica $_GET zawiera dane z formularza wysłanego metodą get oraz wartości przesłane w adresie URL. Tablica $_POST zawiera dane z formularza wysłanego metodą post Tablica $_SERVER zawiera
Formatowanie daty i czasu date(string $format, ?int $timestamp = null): string Funkcja date zwraca datę lub czas w postaci tekstu. Jej obowiązkowym parametrem jest $format, a opcjonalnym znaczni