我對這個程序有一個困惑。指針可以作爲變量嗎?
#include <stdio.h>
int main(void)
{
int value = 10;
char ch = 'A';
int* ptrValue = &value;
char* ptrCh = &ch;
int* ptrValue1 = value;
char* ptrCh1 = ch;
printf("Value of ptrValue = %d and value of ptrValue1 = %d\n", *ptrValue, ptrValue1);
printf("Value of ptrCh = %c and value of ptrCh1 = %c\n", *ptrCh, *ptrCh1);
}
我得到兩次警告,同時編制這個方案
的UniPro @ ubuguest:/ SoftDev/ADSD /模塊 1 /單位1 /路/ C /系統$ CC charPointers.c -o charPointers
charPointers.c:在功能 '主':
charPointers.c:11: 警告:初始化使指針 從整數,未作鑄造
charPointers.c:12:警告: 初始化使指針從 整數沒有鑄造
我知道他們的意思。
運行程序時出現以下錯誤。
UniPro中@ ubuguest:/ SoftDev/ADSD /模塊 1 /單元1/RD/C /系統ptrValue = 10的$ ./charPointers
的值
價值和ptrValue1 = 10
分段故障
我知道我得到第二個printf方法的錯誤。
所以我的問題是如果我在指針中存儲一個值,爲什麼我們不能去引用它呢?它的行爲像一個變量?
謝謝。
指針是存儲地址的變量。 – Nyan 2010-09-01 08:40:34
感謝您的回覆 – Searock 2010-09-01 09:45:52
如果您使用gcc和-Wall進行編譯,它會告訴您第一個printf調用的一個參數對於所使用的格式說明符而言類型錯誤,這意味着您基本上將一個指針轉換爲int取消引用指針,這使得它看起來像你似乎認爲第二個printf行失敗了。 – nategoose 2010-09-01 19:47:21