重慶分公司,新征程啟航
為企業提供網站建設、域名注冊、服務器等服務
為企業提供網站建設、域名注冊、服務器等服務
我們知道變量在計算機內是占有一塊存貯區域的,變量的值就存放在這塊區域之中,
讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業的熱愛。我們立志把好的技術通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領域值得信任、有價值的長期合作伙伴,公司提供的服務項目有:國際域名空間、雅安服務器托管、營銷軟件、網站建設、臨安網站維護、網站推廣。
在計算機內部,
通過訪問或修改這塊區域的內容來訪問或修改相應的變量。turbo
c語言中,
對于變量的訪問形式之一,就是先求出變量的地址,然后再通過地址對它進行訪問,這就是這里所要論述的指針及其指針變量。
所謂變量的指針,
實際上指變量的地址。變量的地址雖然在形式上好象類似于整數,
但在概念上不同于以前介紹過的整數,
它屬于一種新的數據類型,
即指針類型。turbo
c中,
一般用指針來指明這樣一個表達式x的類型,而用地址作為它的值,也就是說,
若x為一整型變量,
則表達式x的類型是指向整數的指針,而它的值是變量x的地址。同樣,
若double
d;則d的類型是指向以精度數d的指針,而d的值是雙精度變量d的地址。所以,
指針和地址是用來敘述一個對象的兩個方面。雖然x、d的值分別是整型變量x和雙精度變量d的地址,
但x、d的類型是不同的,
一個是指向整型變量x的指針,
而另一個則是指向雙精度變量d的指針。在習慣上,很多情況下指針和地址這兩個術語混用了。
我們可以用下述方法來定義一個指針類型的變量。
int
*ip;
首先說明了它是一指針類型的變量,注意在定義中不要漏寫符號*,否則它為一般的整型變量了。另外,在定義中的int
表示該指針變量為指向整型數的指針類型的變量,
有時也可稱ip為指向整數的指針。ip是一個變量,
它專門存放整型變量的地址。
指針變量的一般定義為:
類型標識符
*標識符;
其中標識符是指針變量的名字,
標識符前加了*號,表示該變量是指針變量,
而最前面的類型標識符表示該指針變量所指向的變量的類型。一個指針變量只能指向同一種類型的變量,
也就是講,
我們不能定義一個指針變量,
既能指向一整型變量又能指向雙精度變量。
指針變量在定義中允許帶初始化項。如:
int
i,
*ip=i;
注意,
這里是用i對ip初始化,
而不是對*ip初始化。和一般變量一樣,對于外部或靜態指針變量在定義中若不帶初始化項,
指針變量被初始化為null,
它的值為0。turbo
c中規定,
當指針值為零時,
指針不指向任何有效數據,
有時也稱指針為空指針。因此,
當調用一個要返回指針的函數時(以后會講到),
常使用返回值為null來指示函數調用中某些錯誤情況的發生。
第一個正如你所說。
第二個的話是個函數的定義,這種返回函數指針的類型沒法直接寫在函數名的前面,所以
void (*GetOperateState(void))(U8)這一行是標明了返回值是個函數指針,返回的函數指針的結構跟第一個里的一樣,實際上也就是把第一個聲明的函數指針給返回了。
第三個跟第一個差不多,但是0不是指入口地址為0的函數,0代表NULL,是無的意思,這個是不能被調用的。
0代表的是stdin,標準輸入,就是指在終端進行輸入的東西,我也遇到這個問題了,剛解決。
那你應該用指針的指針才行,然后函數返回指針。
double?*a(double?**p)
{
*p=....?//修改指針所指向的地址
...
return?*p;?//返回指針p指向的地址
}
int?main()
{
double?*p=...?//初始化指針p
double?*q;???//用于接收改變的指針
...
q=a(p);???//將指針p的地址傳遞給a
...
return?0;
}
如果是用作dll的話,那么你應該使用和相應語言兼容的類型才行