I am very new at C programing language. Now i am learning memory and pointer. I am reading and reading but i am not understanding when to use the pointer and when not to. Just see the following to code. In my first code why we dont use "&" operator on this line "scanf("%2s", card_name)" ? and on my second code why i had to use "&" operator on my "scanf("%i", &decks);" I have passed whole night to understand it. Now i am here to get some good hints to understand the difference..
Code 1
#include <stdio.h>
#include <stdlib.h>
int main(){
    char card_name[3];
    int count=0;
    while (card_name[0]!='X') {
        int val=0;
        puts("Enter The Card Name:");
        scanf("%2s", card_name);
        switch (card_name[0]) {
            case 'K':
            case 'Q':
            case 'J':
                val=10;
                break;
            case 'A':
                val=11;
                break;
            case 'X':
                continue;
            default:
                val= atoi(card_name);
                break;
        }
        if (val<2||val>11) {
            puts("sorry this is not valid");
                break;
            }
            if (val>=2&&val<=10) {
                count++;
                printf("Then value is %i And The Count is %i\n", val, count);
                break;
            }
        }
    }
}
Code 2
#include <stdio.h>
int main() {
    int decks;
    puts("Enter a number of decks"); 
    scanf("%i", &decks);
    if (decks < 1) {
        puts("That is not a valid number of decks");
        return 1; }
    printf("There are %i cards\n", (decks * 52));
    return 0; 
}
 
     
     
    