解释下指针*p p &p的关系

如:
char a[]={1,3,5,7,9},*p;
p=a;
那么在程序中使用*p p &p时 *p p &p分别代表什么可以另找例子说明

使用*定义指针,例如char*p;

p是一个字符的指针;

如果在定义时没有使用100*,那么取指针指向的内存的值;

例如:

Inta[]=,3,5,7,9{1},*p;

P=一个;

所以乘以p等于1;

& and是地址操作符,例如,& and是变量p的地址;

比如:

# include < stdio . h >

main()

int[]={1,2,3,4,5},*p=;

printf("%d\n”*p);

printf("%d\n,p);

printf("%d\n”);

printf("%d\n”代替);

扩展资料:

指针变量可以加或减,比如p++、p+I、p-=I。指针变量的加和减不是简单地加或减一个整数,而是取决于指针指向的数据类型。

当给一个指针变量赋值时,要把一段数据的地址赋给它,而不是直接赋给一个整数,比如int*p=1000;这是毫无意义的,通常会导致程序在使用过程中崩溃。

确保在使用指针变量之前初始化它,否则您将无法确定指针指向的位置,如果指针指向的内存不允许,程序将崩溃。对于当前度不指向的指针,建议使用NULL。

可以减去两个指针变量。如果两个指针变量指向同一个数组中的一个元素,那么减法的结果就是两个指针之间不同元素的个数。

数组也是有类型的,数组的名称表示一组相同类型的数据。当您定义一个数组,或者与sizeof, &操作符一起使用它时,数组名称表示整个数组,并且表达式中的数组名称被转换为指向数组的指针。

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-11-23
定义指针时用*,如char *p;
那么p就是一个指向字符型的指针;

如果*不在定义时用,那就取指针所指向内存的值,如
int a[]={1,3,5,7,9},*p;
p=a;
那么*p就是1;

&是取地址运算符,如&p就是取变量p的地址;

下面这个例子:
#include <stdio.h>
main()
{
int a[]={1,2,3,4,5},*p=a;
printf("%d\n",*p);
printf("%d\n",p);
printf("%d\n",a);
printf("%d\n",&p);
}

输出结果为:
1
1245036(各人的电脑可能不相同)
1245036(各人的电脑可能不相同)
1245032(各人的电脑可能不相同)
从结果可以看出,
*p为所指向的地址的值
p为所指向的地址,即a的地址
&p为指针变量p的地址本回答被提问者采纳