我對C很新,我很難得到所有這些指針的掛起。換句話說,取消引用操作符和&符號操作符。我相信,在盯着他們一段時間之後,我開始明白他們是如何工作的。例如:函數返回一個指針
int x = 1; //this creates an integer variable called x and assigns one to it
int *pointer; //this creates a pointer variable that will point to an integer
pointer = &x; //now the variable pointer points to x
*pointer = 0 //the value that pointer points to is now zero
我很確定我明白這是如何工作的。
我正在通過Kernighan和Ritchie的「The C Programming Language」閱讀,但是我對第5.4節(地址算術)中的一些代碼感到困惑。我應該指出,我瞭解地址算術,所以我的問題與此無關。下面的函數中的代碼也不是我的問題。在線搜索有關此代碼的問題會生成大量帖子,人們不知道if/else語句中的代碼如何運行。無論如何,我的問題是關於函數名稱本身。
#define ALLOCSIZE 1000
static char allocbuf[ALLOCSIZE];
static char *allocp = allocbuf;
char *alloc(int n) /*return pointer to n charachters*/
{
if (allocbuf + ALLOCSIZE - allocp >=n)
{
allocp += n;
return allocp - n;
}
else
return 0;
}
同樣,據我所知在函數的代碼,但如何做
*alloc
工作?我明白這個函數返回一個指針。這是否意味着通過讓函數名稱成爲一個指針,我們將返回一個指向char類型的指針?如果是這樣,它指向什麼?在我之前的例子中,我們有
int x = 1;
int *pointer;
pointer = &x;
這裏變量「指針」指向x變量。然而。在函數alloc中不指向任何東西。任何幫助,將不勝感激。
但'char * allocp' **是一個指針,它指向'allocbuf'。 「missing」'&'在這裏解釋[數組名稱是一個指針嗎?](https://stackoverflow.com/questions/1641957/is-an-array-name-a-pointer) –