有错没有:*p++=*q++
来源:百度知道 编辑:UC知道 时间:2024/06/06 12:40:17
在C中,p和q指针分别指向两个数组第一位。
这里的运算顺序是什么?是赋值后指针分别后移一位还是指针所指内容自增+1?
++在后面不是应该先赋值才移动?
这里的运算顺序是什么?是赋值后指针分别后移一位还是指针所指内容自增+1?
++在后面不是应该先赋值才移动?
这个试子是两边的指针各自移动一位,然后再赋值,算术运算符的优先级高于赋值运算符。
我上面的回答是错,应该是先赋值,然后再各自移动。
下面的代码可以验证:
#include "stdio.h"
main()
{
int a[5]={1,2,3,4,5};
int b[5]={5,4,3,2,1};
int *p,*q;
int i=0,j=0;
p=a;
q=b;
for(j=0;j<5;j++)
{
printf("%d\n",*q++);
} /*输出数组a */
for(i=0;i<5;i++)
{
*p++=*q++;
}
for(j=0;j<5;j++)
{
printf("%d\n",*p++);
} /*输出赋值后的数组a */
}
没错,相当于p,q分别指向下一位,并且把q指向的值赋值给p指向的值
char *mystrcpy(char *dst,char *src)
{
while ((*dst++=*src++)!='\0')
return dst;
}
简单的表达一下,就是字符复制
先是指针移动再*取值,再赋值 (++的运算优先级>*)
你们都喜欢写的这么让人蛋疼么?
试证明P=Q
若方程x*x+2px-q=o(p,q是实数)没有实数根。求证:p+q<1/4
求p,q的整数值,使方程X2+PX+q=0与方程X2+qx+p=0都没有实数解
q+r=p+s,p+r>q+s,s>p
q->data=a[i]; p->next=q; p=q;这是什么意思?
等差数列{An},Ap=q,Aq=p,(p不等于q)求Ap+q
设p,q是指针,若p=q,则*p=*q,这种说法对么?为什么?
在等差数列{an}中,ap=q,aq=p,(p,q∈N*,p≠q),则a(p+q)=?
已知P= -(x-y)^3 ,Q=(y-x)^4 ,M=P·Q,
用反证法证q^3+p^3=2求证p+q<=2