«pointers» etiketlenmiş sorular

Bellekte saklanan başka bir değere "işaret eden" veri türü. İşaretçi değişkeni, başka bir varlığın (değişken veya işlev veya başka bir varlık) bir bellek adresi içerir. Bu etiket referans değil, işaretçi kullanımını içeren sorular için kullanılmalıdır. İşaretçileri kullanan en yaygın programlama dilleri C, C ++, Go ve montaj dilleridir. Belirli bir dil etiketi kullanın. Diğer yararlı etiketler, işaretçinin kullanımını açıklayan yöntem, işlev, yapı vb.

12
İşaretçi ve Referans
Bir işleve çalışmak için orijinal değişken verirken daha iyi uygulama ne olabilir: unsigned long x = 4; void func1(unsigned long& val) { val = 5; } func1(x); veya: void func2(unsigned long* val) { *val = 5; } func2(&x); IOW: Birini diğerinin üzerine seçmek için bir sebep var mı?


7
Nesneleri C ++ 'da işlevlere nasıl geçirebilirim?
C ++ programlama konusunda yeniyim ancak Java konusunda deneyimim var. C ++ işlevlerine nesneleri geçirmek için nasıl rehberlik gerekir. İşaretçileri, referansları veya işaretçi olmayan ve referans olmayan değerleri iletmem gerekir mi? Java'da sadece nesnelere referans tutan değişkeni geçtiğimiz için böyle bir sorun olmadığını hatırlıyorum. Bu seçeneklerin her birinin nerede kullanılacağını …

7
size_t ve uintptr_t karşılaştırması
C standardı size_t, herhangi bir dizi dizinini tutabilen bir tür olduğunu garanti eder . Bu, mantıksal olarak size_therhangi bir işaretçi türünü tutabilmesi gerektiği anlamına gelir . Google'da bulduğum bazı sitelerde bunun yasal olduğunu ve / veya her zaman çalışması gerektiğini okudum: void *v = malloc(10); size_t s = (size_t) v; …
246 c  pointers  size-t 

14
Sınıf veri elemanı işaretçisi “:: *”
İyi derleyen bu garip kod snippet'i ile karşılaştım: class Car { public: int speed; }; int main() { int Car::*pSpeed = &Car::speed; return 0; } Neden C ++ bu işaretçiyi bir sınıfın statik olmayan bir veri üyesine sahip? Ne gerçek kodda bu tuhaf pointer kullanılmasıdır?
243 c++  class  pointers  c++-faq 

4
Ne zaman işaretçi kullanırım?
Tamam, son kez C ++ 'ı bir yaşam için yazdım std::auto_ptr, std lib'in mevcut olduğu ve boost::shared_ptrtüm öfke oldu. Ben gerçekten sağlanan diğer akıllı işaretçi türleri artış içine baktım. C ++ 11'in artık bazı türlerde artış sağladığını anlıyorum, ancak hepsini değil. Peki birisinin hangi akıllı işaretçiyi ne zaman kullanacağını belirlemek …


7
C ++ 'ta referans ile geçerek işaretçi üzerinden geçmenin faydaları var mı?
C ++ 'ta referans ile geçerek işaretçi üzerinden geçmenin faydaları nelerdir? Son zamanlarda, referansla geçmek yerine işaretçilerle geçirme işlevi argümanlarını seçen birkaç örnek gördüm. Bunu yapmanın faydaları var mı? Misal: func(SPRITE *x); çağrısıyla func(&mySprite); vs. func(SPRITE &x); çağrısıyla func(mySprite);


8
C harfinde char dizisi ve karakter işaretçisi arasındaki fark nedir?
C işaretçiler anlamaya çalışıyorum ama şu anda aşağıdaki ile karıştırıyorum: char *p = "hello" Bu, h'den başlayarak karakter dizisini gösteren bir karakter işaretçisi . char p[] = "hello" Bu, merhaba depolayan bir dizidir . Bu değişkenlerin her ikisini de bu işleve geçirdiğimde fark nedir? void printSomething(char *p) { printf("p: %s",p); …
216 c  arrays  pointers 

17
İşlevdeki dizi döndürme
int arr[5]Bir işleve geçirilen bir dizi var fillarr(int arr[]): int fillarr(int arr[]) { for(...); return arr; } Bu diziyi nasıl iade edebilirim? Bunu nasıl kullanacağım, bir işaretçiyi geri döndüğümü söyleyerek ona nasıl erişeceğim?

25
Bellek adresi değilse C işareti tam olarak nedir?
C ile ilgili saygın bir kaynakta, &operatör tartışıldıktan sonra aşağıdaki bilgiler verilir : ... Terminolojinin [adresinin] kalması biraz talihsizdir , çünkü adreslerin ne hakkında olduğunu bilmeyenleri karıştırır ve yapanları yanıltır: işaretçileri adresler gibi düşünmek genellikle kedere yol açar. . Okuduğum diğer materyaller (eşit derecede saygın kaynaklardan söyleyebilirim) her zaman utanmadan …


17
C referans ile geçme
C bir değişkenin referans olarak geçmesini desteklemiyorsa, bu neden işe yarar? #include <stdio.h> void f(int *j) { (*j)++; } int main() { int i = 20; int *p = &i; f(p); printf("i = %d\n", i); return 0; } Çıktı: $ gcc -std=c99 test.c $ a.exe i = 21


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.