Senin, 12 Mei 2014

Const quailifier memungkinkan kita untuk menginformasikan pada compiler agar nilai dari suatu variable tertentu tidak boleh diubah. Pada kode program C versi awal-awal, const tidak digunakan karena tidak tersedia.

*Mengkonversi string ke huruf besar menggunakan non-constant pointer ke non-constant data
Level tertinggi dari akses data diberikan oleh pointer non-konstan untuk data non-konstan. Pada bagian ini data bisa diubah melalui pointer yang berbeda, dan pointer bisa diubah untuk menunjuk ke item data lain. Deklarasi pointer non-konstan ke data non-konstan tidak berisi  const. Pointer bisa digunakan untuk menerima string sebagai argumen untuk fungsi yang menggunakan pointer aritmatika untuk memproses (dan merubah jika mungkin) setiap karakter string. Fungsi convertToUppercase pada fig 7.10 mendeklarasikan parameter, non-konstan pointer ke non-konstan data yang dipanggil sPtr (char *sPtr), di baris ke 21.
Contoh Program:

1 /* Fig. 7.10: fig07_10.c
2 Converting a string to uppercase using a
3 non-constant pointer to non-constant data */
4
5 #include <stdio.h>
6 #include <ctype.h>
7
8 void convertToUppercase(char *sPtr); /* prototype */
9
10 int main( void )
11 {
12 char string[] = "characters and $32.98"; /* initialize char array */
13
14 printf( "The string before conversion is: %s", string );
15 convertToUppercase( string );
16 printf( "\nThe string after conversion is: %s\n", string );
17 return 0; /* indicates successful termination */
18 } /* end main */
19
20 /* convert string to uppercase letters */
21 void convertToUppercase(char *sPtr)
22 {
23 while (*sPtr != '\0' ) { /* current character is not '\0' */
24
25 if (islower( *sPtr )) { /* if character is lowercase, */
26 *sPtr = toupper( *sPtr ); /* convert to uppercase */
27 } /* end if */
28
29 ++sPtr; /* move sPtr to the next character */
30 } /* end while */
31 } /* end function convertToUppercase */


Output program: 

*Menampilkan satu karakter string menggunakan  pointer non-konstan ke data konstan.

Pointer non-konstan ke data konstan dapat dimodifikasi untuk tujuan ke beberapa item data dari jenis yang sesuai, tapi data yang dituju tidak dapat dimodifikasi. Pointer bisa menerima argument array yang akan memproses setiap elemen tanpa merubah data. Sebagai contoh, fungsi printCharacters mendeklarasikan parameter sPtr ke tipe const char *. Deklarasi dibaca dari kanan ke kiri sebagai “sPtr adalah pointer ke konstan karakter”. Fungsi menggunakan perintah for untuk menampilkan setiap karakter di string sampai mendapatkan nilai null.

/* Fig. 7.11: fig07_11.c
Printing a string one character at a time using
a non-constant pointer to constant data */
#include <stdio.h>
void printCharacters(const char *sPtr );
int main( void )
{
/* initialize char array */
char string[] = "print characters of a string";
printf( "The string is:\n" );
printCharacters( string );
printf( "\n" );
return 0; /* indicates successful termination */
} /* end main */
/* sPtr cannot modify the character to which it points,
i.e., sPtr is a "read-only" pointer */
void printCharacters( const char *sPtr )
{
/* loop through entire string */
for ( ; *sPtr != '\0'; sPtr++ ) { /* no initialization */
 printf( "%c", *sPtr );
} /* end for */
} /* end function printCharacters */

Output: 


0 komentar:

Posting Komentar