与程序语句int p a等价的是int p p a还是int p a

2021-03-18 16:15:18 字数 6208 阅读 1563

1楼:匿名用户

int *p;表示开设一个变量p用于存放地址

数组名即可理解为数组起始地址,也是数组第1个元素地址

int *p=a;与int *p; p=a;和int *p; p=&a[0];都是完成同样的工作:将数组起始地址放到变量p中。

2楼:gta小鸡

int *p;p=a;

3楼:回首鈉往事

最后一个肯定是不对的 *p内容是一个地址了,*p就是一个存放指针的指针了。

int *p=a和int *p=&a有什么区别?

4楼:匿名用户

int *p=&a 其实是两个语句 等价于 int *p; p=&a;

如果a是int型,int *p=a是错误的,正确的应该是 int *p; p=&a;

在定义的时候不能给p直接赋值整型,只能赋值int型地址 即 &a;

如果要给p指针指向的地址赋值,就可以*p=a;但不能在定义*p的时候直接赋整型。

5楼:

int a[10];

int *p=a; //与前面定义的数组名a类型相同,才可以这样赋值。

int a;

int *p=&a; //前面定义的a是普通变量,才可以这样赋值。

6楼:捧一米阳光

从基本定义来啊,int *p之后p为一个地址,*代表指向这个地址,int *p=&a等价于int *p,p=&a.这样p和&a都是地址,可以=。对于int *p=a,如果a为数组名,则也是个地址,与前面的就同了,如果a只是个一般变量,p是地址,*指向它,*p合起来就是一个数,如a是int型,就可看成两个数赋值,如果a不是int型,出错

7楼:匿名用户

我的理解

int a,*pa=&a;是正确的,相当于int a,*pa;pa=&a;即(int*)pa=&a。

而int a,*pa;* pa=&a;是错误的,因为*pa是值,&a是地址。

8楼:孤楠独碧

int *p就是申请一个int型的指针p,指针是用来保存地址的,所以&a就是取得a的地址赋给p。但是int*p=a的话,a必须是个地址,可以是指针,也可以使数组名。

9楼:不潇撒的渔

int* p 是定义个指针变量,&是取址符;

所以int* p=a,是定义个整型指针变量,并将a赋值给该变量;

int* p=&a,是将a的地址赋给该整型指针变量;

10楼:

我猜你的 a是int型的 假设定义了 int a = 12; 那么 int *p = a;编译是通不过的, 因为这里p初始化是把 int 型直接赋值给了 int*这是编译器不允许的, 而后者 int *p = &a, 是把变量a的地址赋值给指针p 意思是把a的地址存储在指针的内存空间中, 我们查询 *p 是根据指针p存储的地址去找到a的。

11楼:我的查出

int *p=a相当只要你给与a一个具体的值该指针将指到那儿

int *p=&a是&a中的a是你输入的值所在的位置而p指的是地址a的地址

12楼:匿名用户

int *p=a p指针的值(p代表的地址)是a

int *p=&a 表示p指针指向的是a的地址,p的值是a的地址

13楼:匿名用户

前者是将a的内容赋给指针p(也就是p指向a指向的数据)

后者是将a的地址赋给指针p(也就是p指向a)

14楼:匿名用户

int *p=a 表示p指针的地址是a

int *p=&a 表示p指针指向的是a的地址,p的值的a的地址

15楼:匿名用户

nt *p是定义一个指针 对应的该是地址

int*p=&a 则a是个指针或数组

int*p=&a 则a是个数据

16楼:胡晓帅

前者a的类型应该为int*,为负值操作,p的值等于a的值

后者a的类型应该为int,为取地址操作,p的值等于a的地址

17楼:天蝎

1)int *p=a;

举例:int *p=100;

p是一个指针变量,将一个常量赋给一个指针变量,p等于地址0x00000064,即p是指向某个数的指针变量,该数的地址是0x00000064,一般实际中没这么用;跑下程序:

2)int *p=&a;

举例:int a=100; int *p=&a;

a是一个变量,p就是指向a的指针变量,即p等于a的地址;跑下程序:

c语言中int*p=a与int*p=&a有什么区别???求大侠帮忙!!!

18楼:匿名用户

区别很大。第一个int *p = a;这是把a给一个指针,一般a是指针或数组,否则可能会造成很大错误。

int *p = &a;这是把a的地址给p,一般a可以是一个整型变量。

19楼:匿名用户

因为p为指针变量,它初始化的值只能为地址,例如:

int b[10],a;

int *p1=b,*p2=&a; //这两种赋值都可以,注意,a,b都是地址,b是数组名,为数组的首地址,

若如下定义就是错误的:

int *p3=a;//a是简单变量,不是地址,而是值,类型不匹配,所以错了

20楼:步行者

int*p=a,首先a是一个指针,然后定义一个int型指针p,指向a

int*p=&a ,首先a是一个数值(比如之前定义它 int a=100),那么在定一个指针p,指向a=100中a的内存地址

注意两个式子放在一块写是错误的。不可能定义a为指针,又为数值

21楼:匿名用户

int *p是定义一个指针 对应的该是地址

int*p=&a 则a是个指针或数组

int*p=&a 则a是个数据

22楼:匿名用户

区别很大,第一个是把a赋给指针变量p,a变量必须存放的是指针值;第二条语句是把a变更本身的内存地址拿出来,赋值给指针变量p。

23楼:

a的类型不一样,第一个要指针类型的int变量,第二个是普通变量

24楼:匿名用户

第一个a必须也是指针才能对吧,第二个指向了a的地址。

25楼:浦小雨漆娜

*p=&a;是将a的地址赋值给*p,结果会是一个十六进制的数。

第二个是让p指向a的地址空间。*p的傎和a相等。

inta=2,*p;

*p=&a;

打印*p应该是一个地址值,很长一串,

p=&a;

打*p印结果会是2;

c语言中*p=&a和p=&a有什么区别

26楼:非常可爱

c语言中*p=&a和p=&a只有一个区别就是指针初始化时间不同。

p=&a:p是1维指针;

*p=&a:p是2维指针;

p=&a示例:

inta;

int*p;

a=5;

p=&a;

printf("valueis:%d.",*p);

扩展资料*p=&a的使用

int a, b, c;

int **p;

a = 5;

b = 6;

c = 7;

p = (int **)malloc(el_**t * sizeof(int *));

*p = &a;

*(p + 1) = &b;

*(p + 2) = &c;

for(int i = 0; i < el_**t; i++)printf("value is : %d\n", **(p + i));

27楼:育知同创教育

总得来说没区别,就是指针初始化的时间不同而已int *p = &a;//这里p声明的时候直接初始化它的值为变量a的地址

int *p;//声明指针p,p的值不确定可能指向任何地址,p = &a;//显示初始化使p指向a的地址

28楼:匿名用户

如果a都是基础类型, 而不是指针, 比如a为int那么 p=&a, 是把a的地址,赋值给p, p需要是int *类型。

而*p=&a 是把a的地址赋值给*p, p需要是int **类型。

注意 如果是int *p=&a;这种形式

是定义int *类型的p, 并给p初始化为&a。 等效于int *p;

p=&a;

还是给p赋值,而不是给*p赋值。

29楼:匿名用户

1.一般来说*p=&a的表示方法是错的,*p=a和p=&a是正确的。

2.*p=a的意思:将a的值赋给p指针指向的地址的值;

3.p=&a的意思是:将a的地址赋给指针p;

4.区别:*p是一个值;p是一个地址;两者完全不相同。

5.*代表着p指向的地址的值,简单来说就是取值;&是取地址符号,取的是地址;p是指针,可以理解为所指向的值的地址,*p就是取p指针指向的地址的值,&a就是取a的地址。

30楼:匿名用户

对于指针来说,

*p = a[0],表示向地址为p的内存区域赋值为a[0]。

p = a[0],把

变量p的值改为a[0],这个语句正常应用中是错误的。变量p的值为内存地址,这样赋值会丢掉p原来指向的内存。

正确给内存地址赋值应该使用第一句。

31楼:天雨下凡

这样问说明你对指针的概念还不清楚,以下两种方式等价:

一、先声明指针,再给指针赋值

int *p,a;

p=&a;

二、定义指针的同时给它赋值

int a,*p=&a; //这里的*p可以解释成int * p,int *表示p是指向int型变量的指针

32楼:匿名用户

#include

intmain()

33楼:平野律子

举个例子吧: a是一个数组,它在内存中的初始地址比如说是0x11111111(简单假设),且a[0]的值是1,也就是说,内存0x11111111中存储的值是1。 于是,&a[0]=0x11111111,a[0]=1。

int *p; p=&a[0]; 指针p会有一个自己的内存地址,通常占用4个字节(比如初始地址是0x22222222)。p的值是&a[0],也就是说从0x22222222开始,后面4个字节中存储的值是0x11111111。 *p的值就等于p所指向的内存地址中存储的值,也就是a[0]。

所以*p等于1。 如果*p=&a[0]的话,很容易出问题。比如说int *p之后,p的初始值可能是0xcccccccc(debug版本)或者0x00000000(release版本)。

这个时候,如果你写一句*p=&a[0]的话,将会把0xcccccccc或者0x00000000内存之后4个字节的值变为0x11111111。 而0xcccccccc和0x00000000内存区通常是不可写的,这样就会报错。采纳哦

34楼:爵爷

在定义指针的同时让指针指向某个地址 如int *p=&a;不能直接使用*p=&a; p=&a;代表的是让p指向变量a的地址

35楼:百度用户

*p=&a;是将a的地址赋值给*p,结果会是一个十六进制的数。 第二个是让p指向a的地址空间。*p的傎和a相等。

int a=2,*p; *p=&a; 打印*p应该是一个地址值,很长一串, p=&a; 打*p印结果会是2;

36楼:

有啊,*p是个指针,他储存的是一个变量的地址。你把a[0]里的数据赋给他,是储存在那个变量中,不是在存*p中。另一个p是个变量,a[0]中的数据时存在p中

例如:int *p;

p=&b;

*p=a[0];

b==a[0] 值是放在b中

另一个是放在p中 ,不同的

int p下面等价的语句是,int *p[4];下面等价的语句是

1楼 匿名用户 int p 4 是一维一级指针数组,p是指针数组名,这个数组有4个元素,每个元素都是int行指针 int p 4 是一维数组,p是数组名,这个数组有4个int型元素int p是二级指针,即指向一级指针的指针int p 4 我也不懂 int p 4 是指向一维数组的指针,即指向类型为i...

APEC的A,P,E,C分别是什么意思!比如A是Asia-P

1楼 百度用户 apec 亚太经贸合作组织 简称亚太经合组织 the asia pacific economic cooperation apec峰会每个字母a p e c 分别是什么意思 2楼 匿名用户 中文名 亚太经济合作组织 外文名 asia pacific economic cooperat...

c语言中有时会定义p a是什么意思不应该是p a吗

1楼 夏成 int a int p a 相当于int p p a 记住就行了 除了定义的时候,其他时候 p 正常情况 只能等于内容 a的值 2楼 匿名用户 int a int p a 或者int p p a c语言中 p a和p a有什么区别 3楼 非常可爱 c语言中 p a和p a只有一个区别就是...