Memset- gdzie błąd?

0

Po uruchomieniu programu wszystko ladnie się czyta i wyswietla, ale po użyciu memset, wprowadzając do zmiennej b np 15 pojawiają się jakieś ogromne liczby, wie ktoś o co tutaj chodzi?

#include <iostream>
#include <cstring>
using namespace std;
int main()
{
	void wyswietlenie(int t[],int ilosc);
	void pobranie(int tab[],int ilosc);
	int tab[5];
	void *a;
	int b;
	
	pobranie(tab,5);
	cout<<"Sprawdzamy elementy w tablicy...\n";
	wyswietlenie(tab,5);
	cout<<"Ustawiamy teraz wszystkie elementy na liczbe, wpisz liczbe calkowita:\n";
	cin>>b;
	a=tab;
	memset(a,b,sizeof(int)*5);
	cout<<"A teraz po tej operacji, wyswietlamy wynik...\n";
	wyswietlenie(tab,5);
	system("pause");
}
void pobranie(int tab[],int ilosc)
{
	cout<<"Wpisz "<<ilosc<<" liczb calkowitych, pierwsza:\n";
	cin>>tab[0];
	for(int i=0;i<ilosc-1;i++)
	{
	cout<<"Wpisz kolejna\n";
	cin>>tab[i+1];
	}
}
void wyswietlenie(int t[],int ilosc)
{
	for(int i=0;i<ilosc;i++)
	cout<<i+1<<" element "<<t[i]<<endl;
}
1

Memset() działa dobrze (bajt po bajcie), zobacz:
15 = 00001111
Int ma 4 bajty zatem teraz wygląda tak:
00001111 00001111 00001111 00001111 = 252645135

1

Jeśli chcesz wypełnić tablicę jednakowymi wartościami użyj std::fill (nagłówek <algorithm>):

fill(tablica, tablica + ilosc_elementow, wartosc);
0

Super dzięki. Poranek na to zmarnowałem cały. Właśnie nie rozumialem dlaczego dla 0 jest wszystko ok, teraz jasne, dzięki. :)

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