P是指针变量,p=a,其中a等价于什么?

david1662022-10-04 11:39:541条回答

已提交,审核后显示!提交回复

共1条回复
jimmy463 共回答了16个问题 | 采纳率87.5%
a是一个地址(例如是数组名),当然也能是一个指针变量.
1年前

相关推荐

具有相同基类型的指针变量P和数组变量Y,下列写法中不合法的是 ( )
具有相同基类型的指针变量P和数组变量Y,下列写法中不合法的是 ( )
14.具有相同基类型的指针变量P和数组变量Y,下列写法中不合法的是 ( ) .
A.P = Y B.*P = Y[i]
C.P + &Y[i] D.P = &Y
liujianai1年前1
Qsasami 共回答了22个问题 | 采纳率86.4%
C,两个指针相加无意义
将三个整数按从小到大的顺序输出.所有的比较运算和赋值运算均使用指针变量.
将三个整数按从小到大的顺序输出.所有的比较运算和赋值运算均使用指针变量.
#include
main()
{
int a,b,c,t,*pa=&a,*pb=&b,*pc=&c;
printf("Input a,b,c:");
scanf("%d%d%d",&a,&b,&c);
printf("n排序前:%d,%d,%dn",a,b,c);
if(*pa>*pb)
{
t=*pa;
*pa=*pb;
*pb=t;
}
if(*pa>*pc)
{
t=*pa;
*pa=*pc;
*pc=t;
}
if(*pb>*pc){t=*pb;*pb=*pc;*pc=t;}
printf("n从小到大排序:%d,%d,%dn",a,b,c);
}
请大家看看我怎么总有一个错误
lihongyi1年前1
网易直播 共回答了25个问题 | 采纳率96%
#include
int main()
{
int a,b,c,t,*pa=&a,*pb=&b,*pc=&c;
printf("Input a,b,c:");
scanf("%d%d%d",&a,&b,&c);
printf("n排序前:%d,%d,%dn",a,b,c);
if(*pa>*pb)
{
t=*pa;*pa=*pb;*pb=t;
}
if(*pa>*pc)
{
t=*pa;*pa=*pc;*pc=t;
}
if(*pb>*pc)
{
t=*pb;*pb=*pc;*pc=t;
}
printf("n从小到大排序:%d,%d,%dn",a,b,c);
return 0;
}
,你缺少一个返回值
以下能使指针变量p指向变量a的正确选项是?A.int a,*p=a; B.int a,p=a; C.int a,*p=*
以下能使指针变量p指向变量a的正确选项是?A.int a,*p=a; B.int a,p=a; C.int a,*p=*a;D.int a,*p=&a;
废墟漫游1年前1
宝狐零零柒 共回答了17个问题 | 采纳率88.2%
当然是
int a,*p=&a;
p为 int*类型,初始化为int类型变量a的地址,即也是int*类型.
设指针变量p,q指向同一数组,则p-q的绝对值表示p所指对象与q所指对象之间的元素个数.
设指针变量p,q指向同一数组,则p-q的绝对值表示p所指对象与q所指对象之间的元素个数.
比如数组 a[5] * p1=a[0] ,* p2=a[4]
然后p2-p1=4..
为什么是4?
duzouxinqu1年前1
蓝雪7 共回答了16个问题 | 采纳率100%
有种用法就是用数组开头指针(比如p=&(a[0]))来代表数组中元素的.比如*p就是指向a[0],*(p+1)就是指向a[1],等等.那么a[4]的指针就是*(p+4)
这样就可以理解了吧?p2=p+4,所以p2-p1=4
2)两个指针变量不能( ) A.相加 B.相减 C.比较 D.指向同一地址
2)两个指针变量不能( ) A.相加 B.相减 C.比较 D.指向同一地址
2)两个指针变量不能( )
A.相加
B.相减
C.比较
D.指向同一地址
hyand1年前1
e度恋情 共回答了22个问题 | 采纳率90.9%
A.相加
数据结构题 着急)设二叉树中结点的两个指针域分别为lchild和rchild,则判断指针变量p所指向的结点为叶子结点的条
数据结构题 着急)
设二叉树中结点的两个指针域分别为lchild和rchild,则判断指针变量p所指向的结点为叶子结点的条件是________.
设无向图G中有n个顶点,则该无向图中每个顶点的度数最多是_.
520zj1年前1
本年度目标突破 共回答了16个问题 | 采纳率87.5%
p->lchild==NULL&&p->rchild==NULL
n-1
设p1和p2是指向同一个int型一维数组的指针变量,k为int型变量,则下列不能正常执行的语句是?
设p1和p2是指向同一个int型一维数组的指针变量,k为int型变量,则下列不能正常执行的语句是?
a.k=*p1+*p2
b.k=*p1*(*p2)
c.p2=k
d.p1=p2
独一的我1年前1
cyqw 共回答了19个问题 | 采纳率100%
不能正常执行的是C.
p2是一个指针型变量,k是一个整型变量,不能把一个整型变量赋给一个指针,而只能把k的地址值赋给p2,即p2=&k.
要使指针变量p指向2维数组A的第一个元素,正确的赋值是:A.p=A或p=A[0][0] B.p=A[0]或p=A[0][
要使指针变量p指向2维数组A的第一个元素,正确的赋值是:A.p=A或p=A[0][0] B.p=A[0]或p=A[0][0]
C.p=A[0]或p=&A[0][0]
D.p=A或p=&A[0][0]
might_magic1年前1
trcymc 共回答了17个问题 | 采纳率100%
C
C++里定义一个指针变量时,我们事先对这个指针赋空值,那么一般就是赋个0给它.
C++里定义一个指针变量时,我们事先对这个指针赋空值,那么一般就是赋个0给它.
为什么不能像C语言中赋一个NULL这个值呢?为什么是赋值0?C语言中是否可以对这个空指向不写NULL,就写0可以吗?
danielcao19811年前1
ff的光 共回答了18个问题 | 采纳率100%
NULL是个宏#define NULL 0
c和c++中都可以直接用0
变量p为指针变量,若p=&a,下列说法不正确的是().A:&*p==&a B:*&a==a C:(*p)++==a++
变量p为指针变量,若p=&a,下列说法不正确的是().A:&*p==&a B:*&a==a C:(*p)++==a++ D:*(p++)==a++
此题中,D错在那里?
lymg21年前1
就差那么一点儿 共回答了14个问题 | 采纳率78.6%
A:&*p==&a ——
B:*&a==a ——取a地址里存放的值,不就是a嘛
C:(*p)++==a++ —— *p相当于a,都是对值的相加,当然相等.
D:*(p++)==a++ 把a的地址自加了,然后取值,和a自加后的结果进行对比,比如指针p指向的下一个空间里存储的是20,但p指向的控件存储的是10,那么*(p++)就是20,和a++也就是11相比,自然不正确.
两个指针变量的值相等时,表示两个指针变量是?
两个指针变量的值相等时,表示两个指针变量是?
A.占据同一个内存单元 B 指向同一内存单元地址或者都为空
C.是两个空指针 D.都没有指向
tianshizmh1年前1
安全黄瓜 共回答了13个问题 | 采纳率92.3%
B
指针相等,就是指指针里保存的地址相同,
就是说两个指针指向同一个地址.
指针变量,就是一个变量里放着别人的地址.
9. 指向函数的指针变量如何定义?
glandbl1年前1
五品黄山 共回答了21个问题 | 采纳率85.7%
例如要定义一个指向函数原型为int max(int a,int b)的指针变量p可以这样:
int max(int a,int b);
int(*p)(int a,int b);
p=max;
关于指针变量的引用,下列说法中错误的是( )
关于指针变量的引用,下列说法中错误的是( )
A.“指针变量”可以出现在赋值表达式的左边,也可以出现在右边
B.“$指针变量”可以出现在赋值表达式的左边,也可以出现在右边
C.指针变量的前面可以出现指针运算符“*”
D.指针变量的前面不可以出现取地址运算符“&”
SoonYoo1年前1
淡蓝的夜风 共回答了25个问题 | 采纳率84%
D.指针变量的前面不可以出现取地址运算符“&” 指针变量也是变量,当然可以有自己的地址,也可以用&来获取变量地址.
若有定义int(*p)[3]; 则定义了一个名为p的指针变量 它可以指向每行有三个整数元素的二维数组
若有定义int(*p)[3]; 则定义了一个名为p的指针变量 它可以指向每行有三个整数元素的二维数组
请问如何理解这句话和此定义 为什么是二维数组?
夏浪磊1年前1
dd青青 共回答了20个问题 | 采纳率85%
首先(*p)[3]是一个指针数组,意思就是p这个指针是指向一个含有3个元素的数组的,那么p指针每一次加1就相当于把p中存的地址加6(前提是int类型占2个字节,在VC中是占4个字节).
举个例子:
int a[3][3];
int(*p)[3];
p=a; //也就是把数组a的首地址存放到p中
那么p[1]就是a[1][0]的地址,p[1][0]就等于a[1][0],而p[1][2]就等于a[1][2];
这就说明了为什么是二维数组了
不知道下面这道题应该选什么呢,设已有定义:float x;则以下对指针变量p进行定义且赋初值的语句中正确的是A floa
不知道下面这道题应该选什么呢,
设已有定义:float x;则以下对指针变量p进行定义且赋初值的语句中正确的是
A float *p=1024; B int *p=(float x); C float p=&x; D; float *p=&x;
AMYNNHUANG1年前1
qq120119 共回答了25个问题 | 采纳率92%
对指针变量p进行定义且赋初值的语句中正确的是
D; float *p=&x;
p是指向float型的指针,此处为它赋值为x(float型)的地址.
A错在为指针变量赋值常量.
B错在为整型指针赋值一个float量.
C错在为一个float型变量赋值一个指针.
“如果p是指针变量,则&p是不合法的表达式”这句话为什么错?
p2pq1年前1
VV是我梦中ll 共回答了19个问题 | 采纳率89.5%
指针变量也需要一个内存空间来存放,这个内存空间也是有地址的,因此&p是合法的.
关于指针变量不能使用“+”进行运算,why?
关于指针变量不能使用“+”进行运算,why?
今天看到一道题:对于基类型相同的两个指针变量之间,不能进行的运算是:
A:< B:= C:+ D:-
答案选了C,为什么啊,麻烦讲解的详细一些,
欢猪1年前1
lopqwcde 共回答了16个问题 | 采纳率87.5%
就因为它永远没意义,那么编译器为啥要放任这种错误呢?
编译型的语言,它与解释的不同,它会争取在编译成目标文件时,解决尽量能够解决的问题,排除尽量可能排除的错误,编译型的语言更多的时间花在编译阶段,当然是为了高效率的目前代码.
如果某种行为不一定总有问题,那么就不去限制,但给个警告比较好.如果永远无意义,它为啥不说呢?
定义3个指向含有4 个元素的一位整形数组的指针变量,用其求A矩阵与B矩阵的和矩阵C
61804431年前1
心语星 共回答了21个问题 | 采纳率76.2%
是不是要这样啊.#includeint main(){int a[3][4]={1,2,3,4,5,6,7,8,9,0,1,2};int b[3][4]={11,21,13,14,51,61,17,18,19,20,31,23};int c[3][4]={0};int (*pa)[4],(*pb)[4],(*pc)[4]; int i,j;for(i=0; i...
*p=&a 是什么含义,谁是指针变量,*p还是p
0203201311年前1
鹿野仙踪 共回答了20个问题 | 采纳率85%
int a = 1;
int *p = &a; p是指针变量 ,p指向a; (注:此时*p表示p指向a的值,即*p 和 a 值是一样的)
//当然也可以通过p改变a的值
*p = 3; //此时a也等于3
p为一指针变量,试写出表达式,用以实现:使p指向单元的数据值减2后作为表达式的值
esdxesdx1年前1
胡姬年十五 共回答了13个问题 | 采纳率100%
p指向单元的数据 表达式为*p;
所以最终表达式为 (*p-2)
指针变量,不能进行哪种运算
袅寒碧阿1年前1
知足的傻瓜 共回答了14个问题 | 采纳率92.9%
类型相同的两个指针变量不能进行加法运算,但能进行减法运算.还能用‘’、‘==’这三个运算符进行比较,主要用于判断指针指向数组元素的先后位置.
若x是整型变量,pb是基本类型为整型的指针变量,则正确的赋值表达式:pb=&x和*pb=X对不对?
若x是整型变量,pb是基本类型为整型的指针变量,则正确的赋值表达式:pb=&x和*pb=X对不对?
第二个表达式对不对呀.求解呀、、我晓得我基础不牢,但是挂科迫在眉睫呀.、、、
飞到家1年前1
261088779 共回答了22个问题 | 采纳率90.9%
int x;
int *pb;
//将整型变量x的地址赋值给b
b = &x;
//*pb就相当于一个整型变量,本质下面语句是整型变量赋值
//但是由于pb是指针,意思就是将pb指向的那个整型值,赋值
//为另一个整型值y
//需要注意的是,这个语句之前,一定要给pb赋值,就是让pb
//指向一个有效的地址,比如pb = &x;
*pb = y;
(27)若有定义int(*Pt)[3];,则下列说法正确的是 A)定义了基类型为int的三个指针变量 B)定义了
(27)若有定义int(*Pt)[3];,则下列说法正确的是 A)定义了基类型为int的三个指针变量 B)定义了
(27)若有定义int(*Pt)[3];,则下列说法正确的是
A)定义了基类型为int的三个指针变量
B)定义了基类型为int的具有三个元素的指针数组pt
C)定义了一个名为*pt、具有三个元素的整型数组
D)定义了一个名为pt的指针变量,它可以指向每行有三个整数元素的二维数组
(32)有以下程序
#include
#define N 8
void fun(int *x,int i)
{*x=*(x+i);}
main()
{int a[N]={1,2,3,4,5,6,7,8},i;
fun(a,2);
for(i=O;i<N/2;i++)
{printf("%d",a[i]);}
printf("n");

程序运行后的输出结果是
A)1313
B)2234
C)3234
D)1234
(39)有以下程序
#include
main()
{ int a=2,b=2,c=2;
printf("%dn",a/b&c);
}
程序运行后的输出结果是
A)O
B)1
C)2
D)3
帮我说一下27题为什么选D,32题为什么选C,39为什么选A,
chingyiyi1年前1
zheng616 共回答了16个问题 | 采纳率93.8%
(27)若有定义int(*Pt)[3];这种声明可以先把变量名字去掉,也就是int (*)[3],对于*可以这样理解,char *s 等同于char s[],所以可以理解为int pt[][3],也就是D中的解释而对于int *pt[3],则不相同了,首先pt是一个数组,...
7.要使指针变量p指向1维数组A的第一个元素,正确的赋值表达式是p=A 或 p=&A[0]()(2.00分) 错误 正确
夸张21年前1
xinyuhuanbao 共回答了19个问题 | 采纳率89.5%
正确
分析:数组名代表数组的首地址也是第一个元素的地址,即p=A正确
A[0]为数组的第一个元素,&符号为取地址,&A[0]为第一个元素的地址,即p=&A[0]正确
指针的数据类型为什么要跟所指向的数据的类型一致,不是说所有的指针变量占用的内存大小是相同的吗?
周紫娟1年前1
qingruiqi 共回答了26个问题 | 采纳率84.6%
这是C语言的语法要求,因为不同类型的指针,在作+-运算时,它的步长是不一样的.
整型变量i的值为3,i的地址为1000,若欲使p为指向i的指针变量,则下列赋值正确的是 ( )
整型变量i的值为3,i的地址为1000,若欲使p为指向i的指针变量,则下列赋值正确的是 ( )
A. &i=3
B. *p=3
C. *p=3
D. p=&i
ugozqsxj1年前1
kia58 共回答了17个问题 | 采纳率100%
是赋值 不是声明因而 p已经是指针类型了.那么只要给p地址就好了.一眼看过去 凡是出现3的都是错的. 想用p=1000的,如果不是嵌入式程序的bootloader之类的东西 就不要这么做了.容易死人的.
设单链表L带头结点且非空,指针变量p指向L中的一个结点,且该结点既不是L中的第一个结点,也不是L中的最后一个结点,指针变
设单链表L带头结点且非空,指针变量p指向L中的一个结点,且该结点既不是L中的第一个结点,也不是L中的最后一个结点,指针变量s指向一个待插入L的新结点.试写出能完成下列操作的语句序列
⑴在p所指结点之前插入s所指结点;
⑵在L中最后一个结点之后插入s所指结点;
⑶删除p所指结点的直接后继;
⑷删除L中第一个结点.
zknyzkny1年前1
hunter129 共回答了20个问题 | 采纳率85%
1. tmp = L;
while(tmp->next !=p) tmp=tmp->next;
tmp->next = s;
s->next = p;
2. tmp = L;
while(tmp->next != null ) tmp=tmp->next;
tmp->next =s;
s->next =null;
3. tmp = p->next;
p->next = tmp->next;
4. tmp = L->next;
L->next = tmp->next;
第 16 题 下列关于指针变量赋空值的说法错误的是
第 16 题 下列关于指针变量赋空值的说法错误的是
A.当赋空值的时候,变量指向地址为0的存储单元 B.赋值语句可以表达为变量名=′\0′; C.赋值语句可以表达为变量名=0; D.一个指针变量可以被赋空值
A
为什么c中指针变量可以直接赋值0,B中还可以赋值字符?
超级ff跳蚤1年前1
stephenchou 共回答了10个问题 | 采纳率80%
1 指针赋空值时代表这个指针哪也不指向,这是特定的,并不是指向0地址单元.
2 指针变量存储的是地址,地址本身是unsigned int 类型, 可以直接赋值任何整型数字,当然这么做是有时是没有意义的.
3 ’ '在内存中是用0来表示的,只不过它的类型是char , 而我们常说的0 是int 型的 ,如果不分类型的话,他们是相等的
两个指针变量不能( ) 选择一个答案 A.相加 B.相减 C.比较 D.指向同一地址
两个指针变量不能( ) 选择一个答案 A.相加 B.相减 C.比较 D.指向同一地址
两个指针变量不能( )
选择一个答案
A.相加 x05
B.相减 x05
C.比较 x05
D.指向同一地址
freeskylshf1年前1
smile2002lau 共回答了16个问题 | 采纳率87.5%
A.相加,其实不是不能,而是没有意义
B.相减,是可以的,比如一个指针指向字符串的开始,另一个指针结尾,相减可以得到字符串的个数
C.比较,是可以的,可以比较是不是相等,也可以比较谁大谁小
D.指向同一地址,不用解释了,当然可以
对于指向同一数组的指针变量,不能进行哪种运算?为什么?最好能举个例子
shouji2061年前1
bluelch 共回答了21个问题 | 采纳率95.2%
不能进行 + * /
可以进行- 值就是两者距离
因为+ * /对地址操作没有意义
设p1、p2是指向int型一维数组的指针变量,k为int型变量,一下错误的语句是?
设p1、p2是指向int型一维数组的指针变量,k为int型变量,一下错误的语句是?
A.k=*p1+p2
B.p2=k
C.p1=p2
D.k=p2-p1 (需要具体过程,
B (不了解为什么D是对的) 其中A选项我漏打了,应该是 k=*p1+*p2
yaofeng1年前1
谁是融冰 共回答了13个问题 | 采纳率100%
B肯定是错误的,A感觉也不对
首先了解一个原则:等号两端的变量类型必须一致才能赋值,同一类型的变量才能进行加减(如int型变量与int型变量才能进行加减,而int型变量与int型指针变量则无法进行加减运算及赋值运算)
A: (*p1)为int型,p2为 int *型(int指针变量);两者无法相加,故错误,应该为k=*p1+*p2.
B: p2为 int*型,k为 Int 型 ;相互之间无法赋值;故错误,应该为p2=&k.
C:含义:把p2指针地址赋值p1,即两者都指向同一个数组元素.
D:p2-p1的含义是:两者相减的结果为二个指针之间的元素数目;
已知P是指针变量,则不能初始化指针的值是 A NULL B 1 C 地址 D 0
玎1451年前1
明月笑天下 共回答了18个问题 | 采纳率83.3%
选C
指针初始化可初始化为具体地址,也可以是空指针,其它的都不行.
一般实际操作中都设为NULL.
关于指针变量的引用的一点小问题 看书时看到的一段原文 把本人看糊涂了 内容如下
关于指针变量的引用的一点小问题 看书时看到的一段原文 把本人看糊涂了 内容如下
若有定义
int a,*p=&a;//
说明指针P指向变量a,a是p指向的目标,可以用*p来引用a,*p与a是等价的 ,*p可当普通变量使用
首先int *p=&a; 这个初始化我都不确定他是不是对的 因为从来没这么写过
我大多如下初始化 int *p,a; p=&a;
他既然说*p,a是等价的 为什么还写成int *p=&a;这样?
其次他的最后一句 “*p可当普通变量使用 ” 难道p本身不就是指针变量么 为什么又成了 *p
其实也就是指针变量初始化引用的问题
ken198401061年前1
scott_liao 共回答了22个问题 | 采纳率100%
指针是一种类型;
int*;这是一种类型;
int *p;p是int *类型,也就是int型指针;
*p指向a;则*p表示的就是a,a是一个int 型变量,所以*p是int变量;
int*p=&a是初始化与int *p;p=&a;是完全相同的;
两个相同类型的指针变量可以做相加减运算吗?
SR电影俱乐部1年前1
桃花依旧笑春风5 共回答了20个问题 | 采纳率100%
C,
两个指针相加是没有意义