mr1yh1
28/05/2005, 22:22
yazdığım bir programda,
dikkatsizliğim yüzünden başıma iş açtım..
aşağıdaki kod bu durumu özetliyor..
#include <iostream>
using namespace std;
char array1[]={'a','b'};
char array2[]={'2','3'};
void foo(char array[]){
int i = sizeof(array);
//sonuncu elemani yaz.
cout<<array[i-1]<<endl;
}
int main (){
foo(array1);
return 0;
}
eğer
char array1[]="ab";
char[] array = array1 yazmış olsaydım
derleyici hata verir, array[] ın derleme zamanında belirlenmesi gerektiğini söylerdi.
fakat , fonksiyonun parametrelerinin deklarasyonu için
void foo( char array[] )
yazdığımda sessiz kalıp
array ı bir char* olarak değerlendiriyor..
dolayısı ile sizeof() fonksiyonu işe yaramaz hale geliyor..( yanıltıcı bir değer döndürüyor )
peki neden C bana bu oyunu oynuyor ? :confused:
dikkatsizliğim yüzünden başıma iş açtım..
aşağıdaki kod bu durumu özetliyor..
#include <iostream>
using namespace std;
char array1[]={'a','b'};
char array2[]={'2','3'};
void foo(char array[]){
int i = sizeof(array);
//sonuncu elemani yaz.
cout<<array[i-1]<<endl;
}
int main (){
foo(array1);
return 0;
}
eğer
char array1[]="ab";
char[] array = array1 yazmış olsaydım
derleyici hata verir, array[] ın derleme zamanında belirlenmesi gerektiğini söylerdi.
fakat , fonksiyonun parametrelerinin deklarasyonu için
void foo( char array[] )
yazdığımda sessiz kalıp
array ı bir char* olarak değerlendiriyor..
dolayısı ile sizeof() fonksiyonu işe yaramaz hale geliyor..( yanıltıcı bir değer döndürüyor )
peki neden C bana bu oyunu oynuyor ? :confused: