1楼:匿名用户
区别很大。第一个int *p = a;这是把a给一个指针,一般a是指针或数组,否则可能会造成很大错误。
int *p = &a;这是把a的地址给p,一般a可以是一个整型变量。
2楼:匿名用户
因为p为指针变量,它初始化的值只能为地址,例如:
int b[10],a;
int *p1=b,*p2=&a; //这两种赋值都可以,注意,a,b都是地址,b是数组名,为数组的首地址,
若如下定义就是错误的:
int *p3=a;//a是简单变量,不是地址,而是值,类型不匹配,所以错了
3楼:步行者
int*p=a,首先a是一个指针,然后定义一个int型指针p,指向a
int*p=&a ,首先a是一个数值(比如之前定义它 int a=100),那么在定一个指针p,指向a=100中a的内存地址
注意两个式子放在一块写是错误的。不可能定义a为指针,又为数值
4楼:匿名用户
int *p是定义一个指针 对应的该是地址
int*p=&a 则a是个指针或数组
int*p=&a 则a是个数据
5楼:匿名用户
区别很大,第一个是把a赋给指针变量p,a变量必须存放的是指针值;第二条语句是把a变更本身的内存地址拿出来,赋值给指针变量p。
6楼:
a的类型不一样,第一个要指针类型的int变量,第二个是普通变量
7楼:匿名用户
第一个a必须也是指针才能对吧,第二个指向了a的地址。
8楼:浦小雨漆娜
*p=&a;是将a的地址赋值给*p,结果会是一个十六进制的数。
第二个是让p指向a的地址空间。*p的傎和a相等。
inta=2,*p;
*p=&a;
打印*p应该是一个地址值,很长一串,
p=&a;
打*p印结果会是2;
在c语言中,int *p,a; *p=&a,和p=&a有什么区别?
9楼:天雨下凡
这样问说明你对指针的概念还不清楚,以下两种方式等价:
一、先声明指针,再给指针赋值
int *p,a;
p=&a;
二、定义指针的同时给它赋值
int a,*p=&a; //这里的*p可以解释成int * p,int *表示p是指向int型变量的指针
10楼:匿名用户
#include
intmain()
{int*p,a=0xaa;//声明int指针
int *p=a和int *p=&a有什么区别?
11楼:匿名用户
int *p=&a 其实是两个语句 等价于 int *p; p=&a;
如果a是int型,int *p=a是错误的,正确的应该是 int *p; p=&a;
在定义的时候不能给p直接赋值整型,只能赋值int型地址 即 &a;
如果要给p指针指向的地址赋值,就可以*p=a;但不能在定义*p的时候直接赋整型。
12楼:
int a[10];
int *p=a; //与前面定义的数组名a类型相同,才可以这样赋值。
int a;
int *p=&a; //前面定义的a是普通变量,才可以这样赋值。
13楼:捧一米阳光
从基本定义来啊,int *p之后p为一个地址,*代表指向这个地址,int *p=&a等价于int *p,p=&a.这样p和&a都是地址,可以=。对于int *p=a,如果a为数组名,则也是个地址,与前面的就同了,如果a只是个一般变量,p是地址,*指向它,*p合起来就是一个数,如a是int型,就可看成两个数赋值,如果a不是int型,出错
14楼:匿名用户
我的理解
int a,*pa=&a;是正确的,相当于int a,*pa;pa=&a;即(int*)pa=&a。
而int a,*pa;* pa=&a;是错误的,因为*pa是值,&a是地址。
15楼:孤楠独碧
int *p就是申请一个int型的指针p,指针是用来保存地址的,所以&a就是取得a的地址赋给p。但是int*p=a的话,a必须是个地址,可以是指针,也可以使数组名。
16楼:不潇撒的渔
int* p 是定义个指针变量,&是取址符;
所以int* p=a,是定义个整型指针变量,并将a赋值给该变量;
int* p=&a,是将a的地址赋给该整型指针变量;
17楼:
我猜你的 a是int型的 假设定义了 int a = 12; 那么 int *p = a;编译是通不过的, 因为这里p初始化是把 int 型直接赋值给了 int*这是编译器不允许的, 而后者 int *p = &a, 是把变量a的地址赋值给指针p 意思是把a的地址存储在指针的内存空间中, 我们查询 *p 是根据指针p存储的地址去找到a的。
18楼:我的查出
int *p=a相当只要你给与a一个具体的值该指针将指到那儿
int *p=&a是&a中的a是你输入的值所在的位置而p指的是地址a的地址
19楼:匿名用户
int *p=a p指针的值(p代表的地址)是a
int *p=&a 表示p指针指向的是a的地址,p的值是a的地址
20楼:匿名用户
前者是将a的内容赋给指针p(也就是p指向a指向的数据)
后者是将a的地址赋给指针p(也就是p指向a)
21楼:匿名用户
int *p=a 表示p指针的地址是a
int *p=&a 表示p指针指向的是a的地址,p的值的a的地址
22楼:匿名用户
nt *p是定义一个指针 对应的该是地址
int*p=&a 则a是个指针或数组
int*p=&a 则a是个数据
23楼:胡晓帅
前者a的类型应该为int*,为负值操作,p的值等于a的值
后者a的类型应该为int,为取地址操作,p的值等于a的地址
24楼:天蝎
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语言中 *p=&a 和 int*p p=&a 的区别
25楼:
总得来说没区别,就是指针
初始化的时间不同而已
int *p = &a;//这里p声明的时候直接初始化它的值为变量a的地址
int *p;//声明指针p,p的值不确定可能指向任何地址,p = &a;//显示初始化使p指向a的地址
26楼:匿名用户
第一个是给指向的变量赋值为的地址,第二个是是一个指针,它指向变量a
c语言中 int*p[4] 和 int(*p)[4]的区别是什么?
27楼:匿名用户
int*p[4]是指针的数组
,也就是说它
是一个数组,数组里存的是一个个的指针
int(*p)[4]是数组的指针,也就是说它是一个指针,指向的是一个数组。指针指向的类型会影响到指针加减运算时地址的位移。比如说有一个数组 int a[4],加上取址运算符 &a,这个表达式的类型就是指向数组的指针,可以这样赋值 p = &a;。
一般用于向函数传递二维数组的时候使用这种类型,这时还有一种更直观的写法
void matrix_sum(int matrix_a[4], int matrix_b[4])
这种写法和
void matrix_sum(int (*matrix_a)[4], int (*matrix_b)[4])
是等价的。
28楼:望阑珊将尽
结合性不一样:前者是指针数组,为4个int指针的数组,有4个元素;后者是数组指针,为一个指针,类型为指向包含4个int类型元素的一维数组的指针。
c语言中,定义int型变量a指针*p,那么,*p=&a和p=&a是什么区别?
29楼:匿名用户
只能int *p=&a或者int *p;p=&a;
30楼:匿名用户
定义int类型变量a和指针*p,则指针p存的是一个int型变量的地址,即可以表达为:p = &a;
*p存的是int型变量的指,即p指针指向地址的内容,所以可*p = a; 当你用*p = &a时,编译器会认为指针的值表示了地址,编译报错。如果你真想这样表示,也可以,只需要将地址强转为int型,即
*p = (int)&a;
31楼:天河宙
你要先int *p然后才能p=&a
32楼:匿名用户
p是地址 &a是地址,*p是p地址对应的值
33楼:白花恋歌
去看 c和指针 这本书,有非常详细的关于指针的几乎所有的问题,&a表示取变量a的地址,根据声明,*p表示访问指针所得到的整形变量,一般情况下地址不能赋值给整形变量,如果非要这么做,只能使用强制类型转换
34楼:匿名用户
*p 是错的。。。。
c语言中int a 1,b 2,c c 1.0 b a输出结果为什么
1楼 匿名用户 结果是c的值是0 因为1 0 b 都会转换位浮点型,结果是0 5 0 5 a 也是会把a转为浮点型,结果是0 5 而c是整形,会对右边运算的结果取整,所结果就是0了。 假如 int a 1 b 2 c 3 表达式a b c的值是1还是0 为什么? 2楼 岔路程序缘 在c语言中,1代表...
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只有一个区别就是...
C语言中,a b与b a有什么区别么
1楼 匿名用户 没区别, 是恒等于,不存在赋值问题,单纯比较,怎么写都行,但是 号就不一样了,是右边赋值给左边 2楼 育知同创教育 写法几乎没有什么区别。前后顺序不影响的。 3楼 匿名用户 双等号 是比较运算符, 没有什么区别 4楼 幻世封神 没什么区别,看个人习惯了 请采纳吧 5楼 研凌工控电脑 ...