#include <stdio.h>
void change(int *arr[], int *ss)
{
*arr[3] = *arr[0];
*arr[0] = 'V' - *ss;
*arr[1] = 'N' + 2 * (*ss);
if(*arr[1] == 'R')
*arr[2] = 'N';
else if(*arr[1] == 'M')
*arr[2] = 'R';
}
void main()
{
int a[5] = {'C','M','P','E'};
int *arr[4];
arr[0]= a;
arr[1]= a + 1;
arr[2]= a + 2;
arr[3]= a + 3;
int s = 2, x=0;
change(arr,&s);
for(x=0; x<4; x++)
printf("%c",*arr[x]);
}
Arkadaşlar sunun outputunun nası cıktıgını bırı anlatabilir mi?
C de 1 Array Sorusu
10
●1.116
- 21-06-2009, 23:29:43resmen saçmalamış olabilir.
yine de fikir verebilir
. C bilen biri daha iyi anlatabilir tabi 
#include <stdio.h> void change(int *arr[], int *ss) { *arr[3] = *arr[0]; // arr[3]'e direkt atama yapılıyor. 67 değerini alıyor arr[3] *arr[0] = 'V' - *ss; // arr[0] 84 oldu *ss in neyi gösterdiğin bilmiyorum :D *arr[1] = 'N' + 2 * (*ss); // arr[1] 82 oldu. muhtemelen burdaki karakterlerin (N'nin) ascii lerinin matematiksel // kodlarıyla oynayıp yeni karakterler elde ediyor. if(*arr[1] == 'R') // bu koşul sağlandığına göre. 82'nin R'nin ASCII kodu olduğunu söyleyebiliriz xD // sonuçta array'de bunlar int olarak tutuluyor. *arr[2] = 'N'; // arr[2]'ye N yani ascii koduyla 78 atandı else if(*arr[1] == 'M') // yukardaki if sağlandığı için buna girmedi. *arr[2] = 'R'; // direkt değer ataması. arr[2] 78 oldu int olarak. } void main() { int a[5] = {'C','M','P','E'}; // bildigimiz dizi tanimlamasi 5. eleman yani a[4] bos // ASCII ler // a[0] = 67 // a[1] = 77 // a[2] = 80 // a[3] = 69 // a[4] = 0 int *arr[4]; arr[0]= a; // burdaki a aslında dizinin ilk elemanının adresi. arr[0] da pointer olduğu için // bu satır çalıştıktan sonra arr[0] = a[0] oluyor. yani arr[0] = 67 oluyor arr[1]= a + 1; // bir soraki eleman için. yani arr[0] = a[1] gibi arr[2]= a + 2; // devam arr[3]= a + 3; // .... int s = 2, x=0; change(arr,&s); //bu kısmı yukarda fonksiyon içinde açıklamaya çalıştım. for(x=0; x<4; x++) // bu arrayin elemanlarını yazdırma döngüsü zaten. printf("%c",*arr[x]); } - 21-06-2009, 23:42:19anladığım kadarıyla string ascii lerine değer ekleyip çıkartarak farklı harfler elde ediyor. mesela:
*arr[0] = 'V' - *ss;
sana T yi veriyor
R S T U V
diye gittiğini düşünürsek V'den 2 karakter geri gitmiş oluyorsun. *ss'in değer'ini V nin ASCII değerinden çıkarttığında sana T'yi veriyor. Tek tek ascii karakterlerini bilmene gerek yok sanırsam
- 22-06-2009, 00:11:15abi alfabe değil onlar. ASCII karakterleri. C kitaplarının arkasında görürsün gelende. Yani bir standartlaştırma kurumunun belirlediği birşey. C ye özel bir durum değil.
bir byte 8 bit ya. yani 2^8 = 256farklı olasılık var. Amerikan Standart Cominitesi bunların hepsine kafasına göre değer vermiş.
ASCII tablosu - Vikipedi
gördüğün gibi 65 den sonra harfler başlıyor. Bu örnekte yapılan olay şu. karakterlerin ASCII kodu üzerinde aritmatik işlemler yapılarak farklı karakterler elde ediliyor.
mesela V den yani 86 dan 2 çıkartıyor. 84 elde ediyor. O da char olarak yazdırdığın zaman sana 84 ü veriyor.
ASCII çok kıl bir olaydır. bu karakter setlerinde falan da oluyor. türkçe karakter sorunsalı yaratıyor. kanser ediyor alemi. bence ezberle geç
boşver mantığı falan çok da takma
.
ama yine de ASCII nedir diye soruyosan ASCII - Vikipedi
aslında kendim anlatmaya çalıştım ama anlatamadım sildim tekrar

yine de fikir verebilir 