Beberapa orang mungkin bertanya-tanya mengapa menggunakan kata kunci const ketika kita #define, yang akan bertindak sebagai kata kunci tetap di seluruh program. Perbedaan mencolok antara const dan #define adalah, yang terakhir tidak dikenali oleh kompiler, ia diproses sebelumnya di awal mirip dengan mencari dan mengganti. Perbedaan utama lainnya adalah makro dapat didefinisikan ulang, tetapi konstanta tidak dapat diubah. Makro memiliki cakupan di seluruh program dan dapat diperiksa tipenya, sedangkan cakupan const terbatas dan dibatasi.

Dengan const Anda dapat menggunakan pointer untuk memindahkannya, atau bahkan mengetikkannya sesuai keinginan! Mari masuk ke studi kasus kata kunci const.

  1. const uint8_t var =9; sama dengan uint8_t const var =9; (Saya lebih suka yang kedua, karena Anda mendefinisikannya sebagai var adalah konstanta bertipe int 8 bit)
  2. Berikut ini percobaan yang menarik:
    uint8_t const var =9;
    uint8_t *ptr =
    *ptr =78;
    printf(“ %d “, *ptr); →dalam hal ini Anda dapat mengubah melalui alamat karena kata kunci const bertindak sebagai perlindungan untuk var, bukan alamatnya. Ini fakta menarik, jika Anda mendeklarasikan const sebagai global, Anda tidak akan bisa mengubahnya karena akan disimpan di FLASH yang merupakan write safeguarded.
  3. uint8_t const *var = →var adalah pointer yang merupakan data konstan bertipe int, yang datanya tidak dapat diubah tetapi alamatnya dapat diubah.
    uint8_t temp1 =90;
    uint8_t temp2=98;
    uint8_t const *var =
    var=
    printf(“%d”, *var); →O/P akan menjadi 98, dalam hal ini Anda tidak diperbolehkan *var = 90
  4. uint8_t *const var = &var. → di sini var adalah penunjuk const bertipe int.
    uint8_t temp1 =90;
    uint8_t temp2=98;
    uint8_t *const var =
    *var =99;
    printf(“%d”, *var); → 0/P akan menjadi 99. dalam hal ini alamatnya tetap, tidak dapat diubah.
  5. uint8_t const *const var = → dalam hal ini menunjuk ke alamat konstan dan data const, yang keduanya tidak dapat dimodifikasi.