SORU
22 EYLÜL 2014, PAZARTESİ


Neden bu kod geçersiz bir işaretçi kullanın ister misin?

#include <iostream>
using namespace std;
int main()
{
    char *pc; 
    int *pi;
    double *pd;

    pc = (char *)10000;         
    pi = (int *)10000;          
    pd = (double *)10000;           
    // 1)
    cout << "before pc = " << (void *)pc << " pi = " << pi << " pd = " << pd << endl;

    pc  ;
    pi  ;
    pd  ;
    // 2)
    cout << "after increase pc = " <<  (void *)pc << " pi = " << pi << " pd = " << pd << endl;

    return 0;
}

Bu kod(1, 2), neden değişkeni void gösterici pc dökme mi?

Bir çalışma zamanı hatası ise değişken baskı yaparsan olmaz oluşmaz kontrol ediyorum pc.

CEVAP
22 EYLÜL 2014, PAZARTESİ


Çünkü char* basılı kullanma cout << something denemek için bir yazdırma string (cout << "Hello, World" << endl; kullanan char * [pedantically, bu örnekte, bir const char *] temsil eder "Hello, World").

10000 (büyük OLASILIKLA kaza) adrese bir dize yazdırmak istemiyorum bu yana, kodu bir işaretçi bir dize olarak kullanılmasını önlemek için yapmak gerekiyor.

Yani 10* *döküm gerçek adresi almak char * HARİÇ genel olarak işaretçi türleri için varsayılan değer, baskılı,.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:
C++

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Bryan Adams

    Bryan Adams

    30 Mart 2006
  • bunnyboxx

    bunnyboxx

    17 NİSAN 2008
  • TheRightTire

    TheRightTire

    14 EKİM 2009