😈
ReverseMe
  • Introduction
  • References
  • ReverseMe
    • Introduction
      • What is Reverse Engineering?
      • Legality of Reverse Engineering
      • Reverse Engineering Communities
  • Programming Language
    • C
      • Basic
        • Pointer
        • Casting
      • Reference
        • stdio.h
          • fclose()
          • fopen()
          • fseek()
          • ftell()
          • fgetc()
          • fgets()
          • fread()
          • fprintf()
          • fwrite()
          • printf()
          • putchar()
          • puts()
          • sprintf()
          • snprintf()
        • stdlib.h
          • malloc()
          • calloc()
          • realloc()
          • free()
          • rand()
          • srand()
        • string.h
          • strcat()
          • strncat()
          • strcmp()
          • strncmp()
          • strcpy()
          • strncpy()
        • time.h
          • time()
  • Reversing Fundamentals
    • Stripped and Unstripped
  • Tools
    • file
    • strings
    • ltrace
    • ghidra
  • CTF Writeups
    • HackTheBox Challenges
      • Baby RE
      • You Cant C Me
  • ABOUT ME
    • Mail
    • LinkedIn
    • GitHub
Powered by GitBook
On this page
  • Contoh Pengunaan
  • 1. Implicit Casting (Konversi Otomatis)
  • 2. Explicit Casting (Konversi Manual)
  • 3. Casting dengan Pointer
  1. Programming Language
  2. C
  3. Basic

Casting

Casting dalam C

Casting digunakan untuk mengubah tipe data dalam ekspresi atau variabel.

Jenis Casting dalam C

Jenis Casting
Penjelasan

Implicit Casting

Konversi otomatis yang dilakukan oleh compiler.

Explicit Casting

Konversi manual yang dilakukan oleh programmer menggunakan (tipe_data).

Contoh Pengunaan

1. Implicit Casting (Konversi Otomatis)

Compiler akan otomatis mengubah tipe data yang lebih kecil ke yang lebih besar untuk menghindari kehilangan data.

#include <stdio.h>

int main() {
    int a = 10;
    float b = a;  // Implicit casting dari int ke float

    printf("Nilai b: %.2f\n", b);
    return 0;
}

Hasilnya:

  • Compiler secara otomatis mengubah int menjadi float.

2. Explicit Casting (Konversi Manual)

Jika kita ingin mengubah tipe data secara paksa, gunakan (tipe_data).

#include <stdio.h>

int main() {
    float x = 5.7;
    int y = (int) x;  // Explicit casting dari float ke int

    printf("Nilai y setelah casting: %d\n", y);
    return 0;
}

Hasilnya:

Nilai y setelah casting: 5
  • (int) x âžœ Menghapus angka desimal dan hanya menyimpan bagian bulat.

3. Casting dengan Pointer

Menggunakan void * untuk Generalisasi Pointer.

#include <stdio.h>

void printData(void *ptr, char type) {
    if (type == 'i') {
        printf("Nilai: %d\n", *(int*)ptr);
    } else if (type == 'f') {
        printf("Nilai: %.2f\n", *(float*)ptr);
    }
}

int main() {
    int a = 10;
    float b = 3.14;

    printData(&a, 'i');
    printData(&b, 'f');

    return 0;
}

Hasilnya:

Nilai: 10
Nilai: 3.14
  • void * adalah pointer umum yang bisa menunjuk ke tipe data apa saja.

  • Sebelum mengakses data, pointer harus dikonversi ke tipe data yang sesuai.

  • (int*)ptr âžœ Mengubah void * menjadi int *, lalu dereferensi dengan *ptr.

PreviousPointerNextReference

Last updated 2 months ago