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只有一个区别就是指针初始化时间不同。
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));
4楼:育知同创教育
总得来说没区别,就是指针初始化的时间不同而已int *p = &a;//这里p声明的时候直接初始化它的值为变量a的地址
int *p;//声明指针p,p的值不确定可能指向任何地址,p = &a;//显示初始化使p指向a的地址
5楼:匿名用户
如果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赋值。
6楼:匿名用户
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的地址。
7楼:匿名用户
对于指针来说,
*p = a[0],表示向地址为p的内存区域赋值为a[0]。
p = a[0],把
变量p的值改为a[0],这个语句正常应用中是错误的。变量p的值为内存地址,这样赋值会丢掉p原来指向的内存。
正确给内存地址赋值应该使用第一句。
8楼:天雨下凡
这样问说明你对指针的概念还不清楚,以下两种方式等价:
一、先声明指针,再给指针赋值
int *p,a;
p=&a;
二、定义指针的同时给它赋值
int a,*p=&a; //这里的*p可以解释成int * p,int *表示p是指向int型变量的指针
9楼:匿名用户
#include
intmain()
10楼:平野律子
举个例子吧: 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内存区通常是不可写的,这样就会报错。采纳哦
11楼:爵爷
在定义指针的同时让指针指向某个地址 如int *p=&a;不能直接使用*p=&a; p=&a;代表的是让p指向变量a的地址
12楼:百度用户
*p=&a;是将a的地址赋值给*p,结果会是一个十六进制的数。 第二个是让p指向a的地址空间。*p的傎和a相等。
int a=2,*p; *p=&a; 打印*p应该是一个地址值,很长一串, p=&a; 打*p印结果会是2;
13楼:
有啊,*p是个指针,他储存的是一个变量的地址。你把a[0]里的数据赋给他,是储存在那个变量中,不是在存*p中。另一个p是个变量,a[0]中的数据时存在p中
例如:int *p;
p=&b;
*p=a[0];
b==a[0] 值是放在b中
另一个是放在p中 ,不同的
c语言中*p=a与*p=&a有什么区别
14楼:清鹏之
让我来综合一下吧
在定义的时候
int *p=&a; 是等同于 int=*p; p=&a;的。该形式只在定义的时候是正确的。就是指针p所指向地址的内容为a的内容。
如果不是定义的时候
*p=&a; 就是它字符的那个意思,就是指针p所指向地址的内容为a的地址。
dev c++试了下
————————————————————————————————————
“*p”表示地址为p存储单元的内容;“p”表示地址;“&a”表示取a的地址;a为变量。
int *p;//初始化指针,但是该指针无指向地址!如果直接使用会有问题。
int *p=&a;//初始化指针,该形式只在定义时正确,表示以p指针所指向地址的值为变量a的值。
p=&a;//表示指针p所指向的地址就是a的地址。即地址间的赋值。
*p=a;//表示指针p所指向地址的内容就是内容a。
在c中,指针一定要初始化,指针加1指的是增加一个存储单元。对数组而言,这意味着把加1后的地址是下一个元素的地址,而不是下一个字节的地址,这是为什么必须声明指针所指向对象类型的原因之一。
15楼:匿名用户
首先来说一下*和&,为了便于理解你可以认为,这里*是取内容,&是取地址。
我不讨论它们的区别,因为*p=&a这个形式一般是错的,常用的是p=&a。
下面比较*p=a和p=&a。看图,图很详细。
显然它们是等价的。
然后比较*p=&a和p=&a;
则这两种都是对指针变量的赋值,赋值有两种形式
①先定义后赋值
int a=3,*p;(定义指针变量*p)
p=&a;(对指针变量取地址)
②定义变量的同时赋值
int a=3,*p=&a
也就是说在赋值时,
int *p=&a
相当于int *p,
p=&a
它们的区别其实就是
int *p=&a是同时定义*p并对赋值p(即a的地址赋给p),而p=&a,只是对p赋值,没有定义指针变量。
但要注意,只有在同时定义赋值时“*p=&a”这种写法才是对的
其他情况下不要用*p=&a,这种形式,因为根本就不对,如下图。我之前一直的疑问是为什么赋值时*p=&a就不算错了?后来老师给的解释是这种形式只有在上面那种情况下成立,其他的情况确实都是错的。
16楼:沉睡的罗罗塔
*p=&a;是将a的地址赋值给*p,结果会是一个十六进制的数。 第二个是让p指向a的地址空间。*p的傎和a相等。
int a=2,*p; *p=&a; 打印*p应该是一个地址值,很长一串, p=&a; 打*p印结果会是2;
对于指针来说,
*p = a[0],表示向地址为p的内存区域赋值为a[0]。
p = a[0],把变量p的值改为a[0],这个语句正常应用中是错误的。变量p的值为内存地址,这样赋值会丢掉p原来指向的内存。
17楼:幻想秘境
*p=a是将a的值给p指针指向的地址的值
*p=&a是将a的地址给p指针指向的地址的值
*p=&a,*p=a和p=&a各是什么意思,有什么区别?
18楼:匿名用户
表达式的意思:
1、*p=a的意思:将a的值赋给p指针指向的地址的值;
2、p=&a的意思是:将a的地址赋给指针p;
3、*p=&a的用法错误。
区别在于:
p=&a就是用a的地址对p赋值,a是一个变量,&a就是存储这个变量的内存地址,指针存储的就是一个地址,*p就是这一地址中的内容。
扩展资料另类*和&
两个地方要注意: 在程序声明变量的时候的*,只是表明“它是一个无符号整数,这个整数指向某个内存地址,一次访问sizeof(type)长度”。这点不要和(*)操作符混淆;
在c++程序声明变量的时候的&,只是表明“它是一个引用,这个引用声明时不开辟新空间,它在内存分配表加入新的一行,该行内存地址等于和调用时传入的对应参数内存地址”。
这点不要和(*)声明符,(&)操作符混淆。
19楼:匿名用户
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的地址。
20楼:匿名用户
*是解引用运算符 &是取地址运算符
21楼:小小小子
int *p=&a;
和int *p;pa=&a;等价
这里的*是一个指针说明符,不是间接寻址运算符,我刚好看到这一点分享一下,前面几个人都说这种是错误的,估计理解错了吧
22楼:千古1帝刘公嗣
直接看**运行结果就
清楚了。
#include
intmain()
23楼:匿名用户
这个问题如下所述:
int b=5;a=10;// 定义变量a,并赋值为10;b=5
int *p=&b; //定义指针变量p,并且让指针p指向变量b,其中 & 为
//取地址运算符
*p=a; //是将a的值就是10存放到指针p指向的变量b,这样b的值不再是
// b=5,而是变成b=10
p=&a;// 这句是改变p 的指向,让p指向变量a。例如还有下面的语句
*p=123; //那么这样后就会有p指向的变量的值为123.此处是a=123.