Pages

Understanding C Programming

Introduction to C

C is an imperative (procedural) language used for system programming. All code must be inside functions.

Example:


while(98) printf("#cisfun\n");

            

Comments

Comments in C are crucial for code documentation and clarity. They can be single-line or multi-line.

Examples:


// Single-line comment

/* Multi-line
   comment */

            

Variables and Data Types

C supports various data types for different storage needs, such as int, char, float, double, etc.

Examples of variable declaration:


int age;
char initial;
float salary;
double pi;

            

Data Types | Integer types (on most 64-bit computers)

Type Storage size Value range
char 1 byte -128 to 127
unsigned char 1 byte 0 to 255
short 2 bytes -32,768 to 32,767
unsigned short 2 bytes 0 to 65,535
int 4 bytes -2,147,483,648 to 2,147,483,647
unsigned int 4 bytes 0 to 4,294,967,295
long 8 bytes −9,223,372,036,854,775,808 to 9,223,372,036,854,775,807
unsigned long 8 bytes 0 to 18,446,744,073,709,551,615

Arrays

Arrays in C allow storing multiple elements of the same type sequentially in memory.

Example:


int numbers[10];
char name[50];

            

Structures

Structures in C allow defining a custom data type that groups variables under one name.

Example:


struct person {
    char name[50];
    int age;
};

            

Functions

Functions in C are blocks of code that perform a specific task. They can take parameters and return values.

Example of function definition:


int add(int a, int b) {
    return a + b;
}

void greet(char *name) {
    printf("Hello, %s!\n", name);
}

            

Control Structures

C provides control structures like if, else, while, for, etc., for decision-making and looping.

Examples:


if (condition) {
    // code block
}

for (int i = 0; i < 10; i++) {
    // code block
}

while (condition) {
    // code block
}

            

Operators and Expressions

C supports various operators for arithmetic, logical, bitwise operations, etc., and expressions always evaluate to a value.

Examples:


int result = 10 + 5;
int a = 10;
int b = 5;
int sum = a + b;

if (a > b) {
    // code block
}

            

Input and Output

In C, input and output operations are performed using functions like scanf and printf.

Example:


#include <stdio.h>

int main() {
    int number;
    printf("Enter a number: ");
    scanf("%d", &number);
    printf("You entered: %d\n", number);
    return 0;
}

            

Pointers

Pointers in C are variables that store memory addresses. They are used for dynamic memory allocation and efficient memory management.

Example:


int num = 10;
int *ptr = #

printf("Value of num: %d\n", *ptr);

            

Control Flow

The flow of execution in C programs is controlled using loops and conditional statements.

Examples:


if (condition) {
    // code block
}

while (condition) {
    // code block
}

for (int i = 0; i < 10; i++) {
    // code block
}

            

Function Parameters and Return Values

Functions in C can take parameters as input and return values as output.

Example:


int add(int a, int b) {
    return a + b;
}

int main() {
    int result = add(5, 3);
    printf("Result: %d\n", result);
    return 0;
}

            

Preprocessor Directives

Preprocessor directives in C begin with a # symbol and are used for including header files, macro definitions, etc.

Example:


#include <stdio.h>

#define PI 3.14159

int main() {
    printf("Value of PI: %f\n", PI);
    return 0;
}

            

Bitwise Operators

Bitwise operators in C perform operations at the bit-level. They are used for manipulating bits in integers.

Example:


unsigned int a = 5; // binary: 00000101
unsigned int b = 3; // binary: 00000011
unsigned int result = a & b; // bitwise AND
printf("Result: %u\n", result); // Output: 1

            

Typedef

The typedef keyword in C is used to create custom data type aliases for existing data types.

Example:


typedef struct {
    char name[50];
    int age;
} Person;

int main() {
    Person p;
    strcpy(p.name, "John");
    p.age = 30;
    printf("Name: %s, Age: %d\n", p.name, p.age);
    return 0;
}

            

Enum

Enums in C allow defining named constants which represent integer values.

Example:


enum Day {
    SUNDAY,
    MONDAY,
    TUESDAY,
    WEDNESDAY,
    THURSDAY,
    FRIDAY,
    SATURDAY
};

enum Day today = WEDNESDAY;
printf("Today is %d\n", today); // Output: 3 (index of WEDNESDAY)

            

Typedef

The typedef keyword in C is used to create custom data type aliases for existing data types.

Example:


typedef struct {
    char name[50];
    int age;
} Person;

int main() {
    Person p;
    strcpy(p.name, "John");
    p.age = 30;
    printf("Name: %s, Age: %d\n", p.name, p.age);
    return 0;
}

            

Memory Management

In C, memory management involves allocating and deallocating memory using functions like malloc and free.

Example:


#include <stdio.h>
#include <stdlib.h>

int main() {
    int *ptr = NULL;
    ptr = (int *)malloc(5 * sizeof(int)); // Allocate memory
    if (ptr == NULL) {
        printf("Memory allocation failed\n");
        return 1;
    }
    // Use allocated memory
    for (int i = 0; i < 5; i++) {
        ptr[i] = i * 10;
    }
    for (int i = 0; i < 5; i++) {
        printf("%d ", ptr[i]);
    }
    printf("\n");
    free(ptr); // Deallocate memory
    return 0;
}

            

File Handling

C provides file handling operations to read from and write to files using FILE pointers and functions like fopen, fread, fwrite, etc.

Example:


#include <stdio.h>

int main() {
    FILE *fp;
    char c;

    fp = fopen("file.txt", "r"); // Open file in read mode
    if (fp == NULL) {
        perror("Error opening file");
        return -1;
    }

    while ((c = fgetc(fp)) != EOF) {
        putchar(c); // Print each character
    }

    fclose(fp); // Close the file
    return 0;
}

            

Error Handling

Error handling in C involves checking return values of functions and using techniques like errno and perror.

Example:


#include <stdio.h>
#include <errno.h>

int main() {
    FILE *fp;
    fp = fopen("nonexistentfile.txt", "r");
    if (fp == NULL) {
        perror("Error");
        printf("Error code: %d\n", errno);
        return 1;
    }
    fclose(fp);
    return 0;
}

            

Conclusion

C is a powerful programming language known for its efficiency and versatility. Mastering C programming involves understanding its syntax, data types, control structures, functions, and more.

By practicing examples and exploring different concepts, you can become proficient in C programming and utilize it for various applications, including system programming, embedded systems, and application development.


No comments:

Post a Comment