2014-12-26 145 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; 
}