1楼:匿名用户
对于指针来说,
*p = a[0],表示向地址为p的内存区域赋值为a[0]。
p = a[0],把变量p的值改为a[0],这个语句正常应用中是错误的。变量p的值为内存地址,这样赋值会丢掉p原来指向的内存。
正确给内存地址赋值应该使用第一句。
2楼:匿名用户
这个是指针和变量的区别:
第一个表示变量p存的是数组a的地址值,即表示指向数组a
第二个表示p和数组a的第一个元素的值一样。
3楼:
有啊,*p是个指针,他储存的是一个变量的地址。你把a[0]里的数据赋给他,是储存在那个变量中,不是在存*p中。另一个p是个变量,a[0]中的数据时存在p中
例如:int *p;
p=&b;
*p=a[0];
b==a[0] 值是放在b中
另一个是放在p中 ,不同的
4楼:
都是赋值语句,p的数据类型不同,被赋值的对像不同而已
*p=a[0] ==>赋值对像不是变量p本身,而是它所指向的对像
p=a[0] ==>赋值的对像就是变量p本身
c语言数组中*p=a,与p=&a[0],有什么区别?跪求!!!
5楼:呆小鱼
如果a是数组,那么没区别,都指向数组第一个元素
6楼:争议什么
一个指向了a数组的地址,一个指向了a[0] 的地址。
#include
void main()
for(i=0;i<5;i++)
printf("\n");}或
#include
void main()
for(i=0;i<5;i++)
printf("\n");}
7楼:匿名用户
p=&a[0] 等价 p=a;
就是问 *p=a与p=a的区别
*p=a 把a的值送入 p指向的单元;
p=a 把a的值送入 单元 p区别就是 单元与指向的单元是不同的
8楼:匿名用户
*p=a指将数组的地址存入地址p的位置,即要知道a数组地址,请到*p位置找
p=&a[0]为将地址p指向数组a[0]的地址上
9楼:羊欢
第一个指针p指向a的地址,第二个p指的是数组a第一个数
10楼:匿名用户
是一样的, 没有区别
c语言中*p=&a和p=&a有什么区别
11楼:非常可爱
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));
12楼:育知同创教育
总得来说没区别,就是指针初始化的时间不同而已int *p = &a;//这里p声明的时候直接初始化它的值为变量a的地址
int *p;//声明指针p,p的值不确定可能指向任何地址,p = &a;//显示初始化使p指向a的地址
13楼:匿名用户
如果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赋值。
14楼:匿名用户
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的地址。
15楼:匿名用户
对于指针来说,
*p = a[0],表示向地址为p的内存区域赋值为a[0]。
p = a[0],把
变量p的值改为a[0],这个语句正常应用中是错误的。变量p的值为内存地址,这样赋值会丢掉p原来指向的内存。
正确给内存地址赋值应该使用第一句。
16楼:天雨下凡
这样问说明你对指针的概念还不清楚,以下两种方式等价:
一、先声明指针,再给指针赋值
int *p,a;
p=&a;
二、定义指针的同时给它赋值
int a,*p=&a; //这里的*p可以解释成int * p,int *表示p是指向int型变量的指针
17楼:匿名用户
#include
intmain()
18楼:平野律子
举个例子吧: 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内存区通常是不可写的,这样就会报错。采纳哦
19楼:爵爷
在定义指针的同时让指针指向某个地址 如int *p=&a;不能直接使用*p=&a; p=&a;代表的是让p指向变量a的地址
20楼:百度用户
*p=&a;是将a的地址赋值给*p,结果会是一个十六进制的数。 第二个是让p指向a的地址空间。*p的傎和a相等。
int a=2,*p; *p=&a; 打印*p应该是一个地址值,很长一串, p=&a; 打*p印结果会是2;
21楼:
有啊,*p是个指针,他储存的是一个变量的地址。你把a[0]里的数据赋给他,是储存在那个变量中,不是在存*p中。另一个p是个变量,a[0]中的数据时存在p中
例如:int *p;
p=&b;
*p=a[0];
b==a[0] 值是放在b中
另一个是放在p中 ,不同的
在c语言中,int *p,a; *p=&a,和p=&a有什么区别?
22楼:天雨下凡
这样问说明你对指针的概念还不清楚,以下两种方式等价:
一、先声明指针,再给指针赋值
int *p,a;
p=&a;
二、定义指针的同时给它赋值
int a,*p=&a; //这里的*p可以解释成int * p,int *表示p是指向int型变量的指针
23楼:匿名用户
#include
intmain()
{int*p,a=0xaa;//声明int指针
c语言中,p=a[0]与* p=&a[0]等价吗
24楼:匿名用户
int p=a[0];和int *p=&a[0];
这两个?你既然你问问题,你能把问题描述清楚吗。
一个是整型,一个是指向整型的指针,当然不一样。
c语言中,p=&a 那么*p与a的区别是什么?
25楼:星呈幻
a和p是变量,&a和*p是表达式,1和0x1000是常量a和*p表示的都是整形左值,p和&a表示的都是指针型左值,1和0x1000表示整形和指针型右值。(左右值的概念不清的话,google一下)
在内存中,a和p有存储空间空间,a存放着1,p存放着0x1000,*p和&a没有空间,他们的运算结果是在寄存器中存放的,1和0x1000也有空间,在程序的常量段存放。
*p按照stanley lippman的著作《c++ primer》中的描述,p是指针变量,*是解引用操作符,*p是一个表达式,含义是“对指针变量p进行解引用操作”,这与表达式&a的含义“取整形变量a的地址”是正好是相反的操作。
26楼:失落血天使
首先 a和p都是变量 1000是常量,这里只有a和p分配了内存,但是1000和1没有
p 是指p的值,也就是1000
&a 是指a的内存地址
*p 是指p的内存地址
a 是指a的值也就是1
1 是a的值,放在分配给a的地址里
1000 是p的值,放在分配给p的地址里形象点说 ,a和p是房子
1和1000是住户,1 住在a里 1000住在p里p 是指p的住户
&a 是指a的门牌
*p 是指p的门牌
a 是指a的住户
1和1000 是住户
书的话,谭浩强的 c语言程序设计第3版 里面有详细的说明帖子就不晓得咧·······
27楼:
&a取址 *p取值这没有什么可说的。
int *p; int a;
a的地址1000h,即&a == 1000h. p是指针,它本身也有存放它的地址,设1200h,
即&p == 1200h(win32下,指针本身长度32位即4字节,可通过sizeof(p)得到). 这样就是用到两块内存了。
p = &a; 即p == 1000h. 这是一个地址值,本质是值,即可以加减等操作的。但是加减后的p, *p可能就无法访问了,因为它已经不指向a了,比如p == 1004h了,如果这是在某一函数里操作的,而1004h地址并不本程序的地址空间里,取*p时那就非法访问,要崩溃的;但如果1004h地址正好是这函数里另外一个int b;变量的地址,那*p的值就是b了。
*p表示取p指向地址的值,也就是1000h上的值; a = 1; 说明1000h上的值为1,所以*p == 1;a, 它本身只是一个符号而已,这个符号代表了地址1000h起的int型长(4字节)的一个内存块, a=1,就是内存块放一个值1, 如果有汇编的思想,能更形象点:[1000h] = 1,根本不需要a,b,c...之类的字符来表示,直接对内存地址进行存取。
28楼:匿名用户
-------------------------------------
1. int a = 1;
2. int *p; -> 他的地址是1000
3. p = &a;
-------------------------------------
1.在内存 某个 地址 放入一个int型的数字[1],这个 地址 符号名为 a
2.声明一个指针,这个指针 在内存位置1000的地方 类型是指针,符号名为 p
3. [*p] 我们声明时 就是 *p 这个形态 所以就叫他指针.
那么:a 是内存某个地址的 符号,语法上我们用 &a 表示这个符号的真正内存地质。
*p 因为是类型是指针,我们不能赋予它值,只能给他一个要指向的地址,共享和修改那个地址里的内容(先不考虑const语句),。指针p里放着 a的地址,当电脑读到 p 时,直接去找 里面的地址去了。
p 指向地址,*p表示那各地址的内容。*p 英语里就叫它 point p 即 指针p
过程:p = &a : p 复制 a的地址到自己的位置。
*p = 2 : 电脑判断 p的类型,是指针,就跳到 p 里的地址位置,在判断类型,不是指针,就把当前位置里的 值 改为 2,如果还是指针,就重复上面 直到遇到不是指针类型的地址。
至于名称,就叫指针,变量是 总称,变量 a, 变量 b, 给他们赋予范围和类型 ,int型变量a,指针型变量p;
C语言中与的区别,c语言中“&”与“*”有什么区别?
1楼 匿名用户 是取地址 叫解引用,意思是取地址的内容 举例 int a 3 int b a 这里 表示取a的地址 b就是去b的地址的内容就是3 2楼 诡其辞 s形式表示取变量s的地址 a b形式表示a与b之间进行位与运算。 s形式表示指针变量指向的位置 a b形式 呵呵!不消说了。 3楼 匿名用户...
c语言中与有何区别,c语言中%c与%s的有什么区别?
1楼 匿名用户 在定义变量时 是定义指针 是引用 注 好象c没有引用 例如 int pvar null 定义一个int类型指针int var 0 int pvar var 定义一个引用 并且定义时要指定所引用的对象 在使用时 是解指针 即取其指向的变量的值 是取地址int var 10 int pv...
c语言中while(s)与while(s i0)的区别
1楼 南京新华电脑专修学院 果s是一个char型指针 0 也即int i 0 while s i int i 0 while s i 是对的,也即char s while s 0 与while s 0 的区别 5 2楼 步行者 while s 0 表示指针s指向的值不等于整数0 int s whil...