日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

引用和指针的差别,数组和指针的差别

發布時間:2023/12/20 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 引用和指针的差别,数组和指针的差别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一:引用和指針的差別

1:引用并不是對象,它僅僅是為一個已存在的對象所起的另外一個名字。必須初始化,并且無法改變它綁定的對象,之后每次使用這個引用都是訪問最初綁定的那個對象。

2:指針本身是對象,能夠不用初始化,能夠改變指針指向的對象


二:指針與數組的差別

指針

數組

保存數據的地址

保存數據

間接訪問數據

直接訪問

通經常使用于動態數據結構

通經常使用于存儲固定數目數據類型同樣的元素

相關操作malloc(),free()等

隱式分配和刪除

同常指向匿名數據

自身即為數據名



在C語言中對于以下的兩種情況,是否同樣呢?

char a[] = "abcdefg";---------------1

char *p = "abcdefg";-----------------2

在談到這些差別時。應該先談一下計算機中對變量是怎樣存儲的。從編譯原理中我們知道,對于全部的變量他都會影射到一個符號表中。為了簡化。這里給出一種最簡單的便于理解的符號表:

a

0xffaa

p

0xffcc

表1 一個簡單的符號表演示樣例

以上表格中a代表一個變量。0xffaa則為變量a的內容的存儲地址。p代表還有一個變量。0xffcc為變量p的內容的存儲地址。對于數組型的變量和指針型的變量,其地址代表的含義不同。

對于數組a:

這個0xffaa地址就是其存放數組內容的首地址了。

對于a[i]的引用過程例如以下:

步驟一、取出i的值,將他與0xffaa相加;

步驟二、取出為(0xffaa+i)中的內容。

對于指針p:

這個0xffcc地址存放的不是字符串的內容,而是一個地址,這個地址才是字符串的首地址,對p[i]或者用指針表示*(p+i)的應用過程例如以下:

步驟一、取出0xffcc地址中的內容。比如為0xffdf;

步驟二、取出地址0xffdf中的內容。


還要提醒一點的就是:

char a[] = "abcdefg";---------------數組內容能改動(字符數組)

char *p = "abcdefg";-----------------內容不能改動(字符串常量)

在ANSI C中,初始化指針是所創建的字符串時常量,被定義為僅僅讀,假設試圖通過指針改動這個字符串的值,程序就會出現為定義的行為。

更具體的能夠參考:http://wenku.baidu.com/view/678d1925a5e9856a561260b1.html


創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的引用和指针的差别,数组和指针的差别的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。