Java的引用和C++的指針都是指向一塊內(nèi)存地址的,通過引用或指針來完成對(duì)內(nèi)存數(shù)據(jù)的操作,但是它們?cè)趯?shí)現(xiàn),原理作用等方面卻有區(qū)別。
(1)類型:引用其值為地址的數(shù)據(jù)元素,Java封裝了的地址,可以轉(zhuǎn)換成字符串查看,長(zhǎng)度也可以不必?fù)?dān)心。C++指針是一個(gè)裝地址的變量,長(zhǎng)度一般是計(jì)算機(jī)字長(zhǎng),可以認(rèn)為是個(gè)int。
免費(fèi)在線視頻教程推薦:java視頻教程
(2)所占內(nèi)存:引用聲明時(shí)沒有實(shí)體,不占空間。C++指針如果聲明之后會(huì)用到才會(huì)賦值。如果用不到不會(huì)分配內(nèi)存。
(3)類型轉(zhuǎn)換:引用的類型轉(zhuǎn)換,也可能不成功,運(yùn)行時(shí)拋異?;蛘呔幾g就不能通過。C++指針指示個(gè)內(nèi)存地址,指向內(nèi)存,對(duì)程序來說還都是一個(gè)地址,但可能所指的地址不是程序想要的。
(4)初始值:引用初始值為java關(guān)鍵字null。C++指針是int,如不初始化指針,那它的值就不是固定的了,這很危險(xiǎn)。
(5)計(jì)算:引用不可以計(jì)算。C++指針是int,他可以計(jì)算,如++或--,所以經(jīng)常用指針來代替數(shù)組下標(biāo)。
(6)內(nèi)存泄露:Java引用不會(huì)產(chǎn)生內(nèi)存泄露。C++指針是容易產(chǎn)生內(nèi)存泄露的,所以程序員要小心使用,及時(shí)回收。
(7)作為參數(shù):Java的方法參數(shù)只是傳值,引用作為參數(shù)使用時(shí),會(huì)給函數(shù)內(nèi)引用的值的COPY,所以在函數(shù)內(nèi)交換倆個(gè)引用參數(shù)是沒意義的,因?yàn)楹瘮?shù)只交換參數(shù)的COPY值,但在函數(shù)內(nèi)改變一個(gè)引用參數(shù)的屬性是有意義的,因?yàn)橐脜?shù)的COPY所引用的對(duì)象時(shí)和引用參數(shù)是同一個(gè)對(duì)象。
C++指針作為參數(shù)給函數(shù)使用,實(shí)際上就是它所指的地址在被函數(shù)操作,所以函數(shù)內(nèi)使用指針參數(shù)的操作都將直接作用到指針?biāo)赶虻牡刂罚ㄗ兞?,?duì)象,函數(shù)等)。
相關(guān)文章教程推薦:java入門教程
Atas ialah kandungan terperinci java中的引用與c++中的指針的區(qū)別. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

First,checkiftheFnkeysettingisinterferingbytryingboththevolumekeyaloneandFn volumekey,thentoggleFnLockwithFn Escifavailable.2.EnterBIOS/UEFIduringbootandenablefunctionkeysordisableHotkeyModetoensurevolumekeysarerecognized.3.Updateorreinstallaudiodriv

Contoh C Linked ini melaksanakan Operasi Sisip, Traversal dan Padam. 1. Gunakan InsertBeginning untuk memasukkan nod di kepala; 2. Gunakan sisipan untuk memasukkan nod dalam ekor; 3. Gunakan DeletEnode untuk memadam nod dengan nilai dan mengembalikan hasil Boolean; 4. Gunakan kaedah paparan untuk melintasi dan mencetak senarai yang dipautkan; 5. Percuma semua memori nod dalam pemusnah untuk mengelakkan kebocoran; Output program akhir mengesahkan ketepatan operasi ini, menunjukkan sepenuhnya kaedah pengurusan asas struktur data dinamik.

Gunakan pengecualian yang diperiksa untuk menunjukkan kesilapan pemulihan, dan pengecualian yang tidak terkawal untuk menunjukkan kesilapan pengaturcaraan; 2. Selepas menangkap pengecualian, mereka mesti diproses, direkodkan atau dibuang semula, dan tidak boleh diabaikan; 3. Buang pengecualian secepat mungkin apabila kesilapan berlaku, dan penangguhan penangkapan di bahagian atas rantaian panggilan; 4. Memberi maklumat konteks yang jelas apabila membuang pengecualian untuk mengelakkan penerangan yang tidak jelas; 5. Gunakan sumber cuba-dengan-sumber untuk mengurus penutupan sumber secara automatik untuk mencegah kebocoran sumber; 6. Elakkan penangkapan pengecualian yang luas seperti pengecualian atau boleh dibuang, dan jenis pengecualian tertentu harus ditangkap; 7. Pengecualian adat harus mengandungi maklumat ralat semantik dan data konteks; 8. Pengecualian tidak boleh digunakan untuk mengawal aliran program biasa untuk mengelakkan kerugian prestasi; 9. Pengecualian rekod

Jika ia meleleh apabila memadam elemen, anda mesti mengelakkan menggunakan Iterator yang gagal. ① Cara yang betul adalah menggunakannya = vec.erase (IT), dan gunakan iterator yang sah yang dikembalikan dengan memadam untuk terus melintasi; ② Idiom yang disyorkan untuk penghapusan batch: vec.erase (std :: rove_if (vec.begin (), vec.end (), syarat), vec.end ()), yang selamat dan cekap; ③ Anda boleh menggunakan iterator terbalik untuk memadam dari belakang ke depan, logiknya jelas, tetapi anda perlu memberi perhatian kepada arah keadaan. Kesimpulan: Sentiasa mengemas kini iterator dengan nilai pulangan memadam, melarang operasi pada Iterator yang gagal, jika tidak, tingkah laku yang tidak ditentukan akan dihasilkan.

Kebangkitan bahasa pengaturcaraan kontrak pintar yang berdedikasi untuk arkitek yang berbeza. Blockstream, yang diketuai oleh Adamback, secara rasmi dilancarkan kesederhanaan, bahasa kontrak pintar asli yang direka untuk Bitcoin, memberikan kepantasan Ethereum dengan pilihan kompetitif baru. Sebagai pencipta cecair, rangkaian lapisan kedua Bitcoin, Blockstream mempunyai latar belakang yang mendalam dalam bidang penyulitan, dan pemimpinnya Adamback adalah tokoh utama dalam sejarah pembangunan Bitcoin. Bahasa kesederhanaan yang dikeluarkan kali ini bertujuan untuk memperkenalkan pengaturcaraan yang lebih kuat ke dalam ekosistem bitcoin. Menurut berita syarikat kepada cointelegraph pada hari Khamis, mudah

Blockchain adalah teknologi lejar digital yang diedarkan dan terdesentralisasi. Prinsip terasnya termasuk: 1 Lejar yang diedarkan memastikan data disimpan serentak pada semua nod; 2. Teknologi penyulitan, menghubungkan blok melalui nilai hash untuk memastikan data tidak diganggu; 3. Mekanisme konsensus, seperti POW atau POS, memastikan urus niaga dipersetujui antara nod; 4. Desentralisasi, menghapuskan satu titik kawalan, meningkatkan rintangan penapisan; 5. Kontrak pintar, protokol untuk pelaksanaan automatik. Cryptocurrency adalah aset digital yang dikeluarkan berdasarkan blockchain. Proses operasi adalah: 1. Pengguna memulakan urus niaga dan tanda secara digital; 2. Urus niaga disiarkan ke rangkaian; 3. Pelombong atau pengesahan mengesahkan kesahihan transaksi; 4. Pelbagai urus niaga dibungkus ke dalam blok baru; 5. Sahkan zon baru melalui mekanisme konsensus

Theautokeywordinc deducesthetypeofavariableFromitsinitializer, MakingCodeCleanerAndmoremaintainable.1.itreduceRosities, terutamanyaWithcomplextypesikeiterators.2.itenhancesmaintabilitybyautomaticallyAdAdAdAdAttottoTypeChanges.3.Isisnessaryaryaryypechanges

std :: source_location adalah kelas yang diperkenalkan oleh C 20 untuk mendapatkan maklumat lokasi kod sumber. 1. Anda boleh mendapatkan nama fail, nombor baris, nama fungsi dan maklumat lain pada masa penyusunan melalui std :: source_location :: current (); 2. Ia sering digunakan untuk pelaporan pembalakan, penyahpepijatan dan kesilapan; 3. Ia secara automatik dapat menangkap lokasi panggilan dalam kombinasi dengan makro; 4. FUNCTION_NAME () boleh mengembalikan nama yang terkurung, dan ia perlu dihuraikan dengan abi :: __ cxa_demangle untuk meningkatkan kebolehbacaan; 5. Semua maklumat ditentukan pada masa penyusunan, dan overhead runtime sangat kecil, sesuai untuk integrasi ke dalam log atau kerangka ujian untuk meningkatkan kecekapan debugging.
