2014-12-26 180 views
-7

請問在C編程語言中* p和& p之間的區別是什麼?因爲我真的有這個問題,我不知道* p或& p是好的!指針:在C編程語言中的* p和&p

+1

的兩個操作員給定的位置的各自的相對其他。請給我們一些讓你困惑的背景。 – NPE

+0

請參閱此網站,http://stackoverflow.com/questions/9661293/cp-vs-p-vs-p – Chandru

+0

'* p'無需指針'p','&p'給出指針'p的地址' –

回答

1

就拿

int a =10; 
int *p = &a; 

a是持有價值的變量10.該值的存儲地址由&a給出。

現在我們有一個指針p,基本上指針指向一些內存位置,在這種情況下它指向內存位置&a

*p給你10

這就是所謂的提領的指針。

p = &a /* Gives address of variable a */ 

現在讓我們考慮

&p

指針是一個也是一種數據類型,並且其中p爲存儲由&p

1

指針是一個變量,其值是另一個變量的地址,即存儲位置的直接地址。像任何變量或常量一樣,您必須先聲明一個指針,然後才能使用它來存儲任何變量地址。指針變量聲明的一般形式是:

type *var-name; 

如:

int *ip; /* pointer to an integer */ 
double *dp; /* pointer to a double */ 
float *fp; /* pointer to a float */ 
char *ch  /* pointer to a character */ 

看看這個程序:

#include <stdio.h> 

int main() 
{ 
    int var = 20; /* actual variable declaration */ 
    int *ip;  /* pointer variable declaration */ 

    ip = &var; /* store address of var in pointer variable*/ 

    printf("Address of var variable: %x\n", &var ); 

    /* address stored in pointer variable */ 
    printf("Address stored in ip variable: %x\n", ip); 

    /* access the value using the pointer */ 
    printf("Value of *ip variable: %d\n", *ip); 

    return 0; 
}