@TarikNeaj gave you a good answer to your question. I thought I'd comment a couple of other things in your code.
Line 7. What are you actually defining with this struct? The name of your struct is important. Does a deck of cards have a rank and a suit and an index? No. A card has a rank and a suit and an index. So, you should name this struct "Card". A deck of cards would be represented by an array of Card objects.
Also, since you are creating constant values for suit size and rank size, you should use those values to size the card_deck array. When you stick a number into the middle of a statement like you did in line 16, we call that a magic number. Magic numbers are bad because they are hard to maintain when your code base grows. Magic numbers should be replaced by constant variables. So, you could move line 16 to below line 18 and replace 52 with (card_suit_size * card_rank_size)