變量的指針就是變量的地址。存放變量地址的變量是指針變量。即在C語言中,允許用一個變量來存放指針,這種變量稱為指針變量。因此,一個指針變量的值就是某個變量的地址或稱為某變量的指針。
1、在"char *p;*p=1;"中,二個"*"符號的作用有什么不同?
在"char *p;"中,符號"*"用于聲明變量,有二層含義:
(1)說明p是一個指針變量,它存儲的是char類型數(shù)據(jù)的地址。
(2)說明*p是一個char類型的變量,該變量的值存儲在p所指向的地址中。
在"*p=1;"中,符號"*"是運算符,表示p指向地址所存儲的數(shù)據(jù)。也可以將*p視為一個整體,是一個變量。變量*p的值存儲在p所指向的地址中。
2、對于指針變量p,p++和(*p)++有什么區(qū)別?
p++表示指針移動。即將p指向下一個存儲單元。而p--則是將p指向上一個存儲單元。存儲單元的字節(jié)數(shù)與指針指向的地址存儲的數(shù)據(jù)類型有關(guān)。如果存儲char類型的數(shù)據(jù),則存儲單元就是1個字節(jié)。如果存儲long類型的數(shù)據(jù),則存儲單元就是4個字節(jié)。
(*p)++表示變量*p的值增加1。也就是指針p所指向的地址中的數(shù)據(jù)增加1。指針p并沒有移動。