İçeriğe geç
ShiftDelete.Net
Haber ara/ SDN'ye SorGiriş
Haber Akışı SDNTV İnceleme Forum Yapay Zeka Akıllı Telefon Elektrikli Otomobil Oyun ShiftDelete.Net Global Teknoloji Haberleri Mobil Otomobil Donanım Savunma Bilim Sosyal Medya İnternet Giyilebilir Teknoloji Rehber Ürünler Son dakika Yazarlar
  1. Ana sayfa
  2. Topluluk
  3. Programlama
  4. Programlama Dilleri
Programlama Dilleri

C++ Pointerler üzerine bir soru

algea21.09.20124 cevap3.140 görüntüleme
2011'den beri505 mesaj
#1
Arkadaşlar aşağıdaki işlemde program çıktısı yaratılan poiter arrayından taşarak 5'e kadar gösteriyor neden acaba?
    #include <conio.h>
    #include <stdio.h>
    #include <string.h>

    int main()
    {
        char *msg="Hello World";
        char **ptr =new char*[3]; /*****/
        for (int i=0;*(ptr+i)!=nullptr;i++){
            *(ptr+i)=msg;
        }

        for (int i=0;*(ptr+i)!=nullptr;i++){
            printf("%d %s\n",i,*(ptr+i));
        }
        getch();
        return(0);
    }

output:
0 Hello World
1 Hello World
2 Hello World
3 Hello World
4 Hello World
5 Hello World
Cevaplar
2008'den beri64 mesaj
#2
C/C++ a çok hakim değilim. ilk for döngüsündeki şartın doğru çalışabilmesi için dizideki pointer lara bir değer atamanmış olması gerekmez mi? bu döngü 3 tane için çalışması tamamen şans meselesi. c,c++ değişken tanımlamada ilk değer atamıyor bildiğim kadarıyla.
2011'den beri597 mesaj
#3


    #include <conio.h>     #include <stdio.h>     #include <string.h>      int main()     {
        char *msg="Hello World";         char **ptr =new char*[3]; /*****/         for (int i=0;*(ptr+i)!=nullptr;i++){             *(ptr+i)=msg;         }          for (int i=0;*(ptr+i)!=nullptr;i++){             printf("%d %s\n",i,*(ptr+i));         }         getch();         return(0);     }

Bu C++ mı !?

C++ da pointer işlicek adam o vakte kadar temel girdi çıktı akışını kullanması gerektiğini "nedenleriyle birlikte" öğrenmiş olmalıdır ki...
ayrıca ortada  "string" sınıfına ait bir örneklemede göremiyorum, "false include !"...

#include <iostream>
#include <windows.h> // windows kullanıyorsun tahmin ettiğim kadarıyla.

using namespace std;

int main()
{
char *sdn = "forum.shiftdelete.net!";
int kere,
    a;

cout << "kac kere ?\n";
cin >> kere;

char **Sdn = new char*[kere];


for(a = 0; a < kere; a++)
*(Sdn+a) = sdn;

cout << "al sana islenmis cikti:" << endl << endl;

for(a = 0; a < kere; a++)
cout << a+1 << " inci kere --> " << *(Sdn+a) << endl;

system("PAUSE");
}



Adnan oktar mode one;

SübanAllah, haşa ama nacizane C++ bilgimi sorguladım bi an...
Ama maşşaAllahhh, yinede pointer kavramına yeterince yakınsın, münafıkları çatlatıcak seviyeye biraz daha döküman okuyarak ve deneme yaparak gelebilirsin, şayet sorun çözüldüyse...

Adnan oktar mode off...
algea Konuyu açan
2011'den beri505 mesaj
#4
Biraz kurcalayınca sanırım buldum. İlgilenenler için

#include <conio.h>
#include <stdio.h>
#include <string.h>

    int main()
    {
        char *msg="Hello World";
        int i=0;
        int size =10;
        char **ptr =new char*[sizeof(char *)*size](); /*****/
        for (int i=0;i<size;i++){
            *(ptr+i)=msg;
            }
        do{
            printf("%d %s\n",i,*(ptr+i));
            i++;
        }while(*(ptr+i)!=nullptr);
        getch();
        return(0);
    }
algea Konuyu açan
2011'den beri505 mesaj
#5
sanırım bu daha doğru oldu
char **ptr =new char*[size+1]();

Cevabını yaz

Cevap yazmak için giriş yap ya da üye ol. Eski forum kullanıcı adın ve parolanla girebilirsin.