LOCK 发表于 2012-5-15 11:30:04

指针问题

#include "stdafx.h"
#include "iostream.h"
void com(char str1[],char str2[])
{
char *p1,*p2;
p1=str1;
p2=str2;
for(;*p1!=0;p1++)
;
while(*p2!=0)
{
*p1=*p2;
p1++;
p2++;

}
*p1=0;
}
int main(int argc, char* argv[])
{
char str1="125374";
char str2="asd";
com(str1,str2);
cout<<str1<<endl;
return 0;
}
..........while循环中将p1++,p2++改为*p1++,*p2++为什么也对。。。。

LOCK 发表于 2012-5-15 11:31:48

补充,也就是为什么下面的也对
#include "stdafx.h"
#include "iostream.h"
void com(char str1[],char str2[])
{
        char *p1,*p2;
        p1=str1;
        p2=str2;
        for(;*p1!=0;p1++)
                ;
        while(*p2!=0)
        {
                *p1=*p2;
                *p1++;
                *p2++;
       
        }
        *p1=0;
}
int main(int argc, char* argv[])
{
        char str1="125374";
        char str2="asd";
        com(str1,str2);
        cout<<str1<<endl;

        return 0;
}

hxs554f 发表于 2012-5-15 12:14:47

++的优先级大于*,*p1++相当于*(p1++),p1先自增,再取地址。作为单独的语句*p1++效果和p1++相同

玩酷子弟lv 发表于 2012-5-15 16:43:45

楼上说的是错的,*p1++是先取值,然后再指针自加,因为不论是p1++还是*p1++都实现了指针的自加,
所以两种结果都是对的,但是第二种没必要,因为*P1的值这里你没有用到,所以不必取值。
ps:若换成(*p1)++结果就不对了哦~~~

hxs554f 发表于 2012-5-15 17:58:23

玩酷子弟lv 发表于 2012-5-15 16:43 static/image/common/back.gif
楼上说的是错的,*p1++是先取值,然后再指针自加,因为不论是p1++还是*p1++都实现了指针的自加,
所以两种 ...

谢谢你提出来,我犯了低级错误,差点误人子弟。*p1++相当于*(p1++),是先取地址,再指针自增

LOCK 发表于 2012-5-15 21:36:29

谢谢了。。。。。

越野e族 发表于 2012-5-17 08:47:09

= = ~符号的优先级问题。

HansonCPT 发表于 2017-6-19 21:32:27

LOCK 发表于 2012-5-15 11:31
补充,也就是为什么下面的也对
#include "stdafx.h"
#include "iostream.h"


*p1++等价于*(p1++),先取p1指向变量的内容,再p1+1,指针最后指向下一个元素;
p1++就是直接指针指向下一个元素;
从两个运算的最后结果来看,都是指向下一个元素。

qq小小七 发表于 2017-6-21 10:38:27

HansonCPT 发表于 2017-6-19 21:32
*p1++等价于*(p1++),先取p1指向变量的内容,再p1+1,指针最后指向下一个元素;
p1++就是直接指针指向 ...

我怎么没看懂呢 *(p++)不应该是先p++然后取值么,为什么是先取地址地址,再指针自增呢?

qq小小七 发表于 2017-6-21 10:41:26

qq小小七 发表于 2017-6-21 10:38
我怎么没看懂呢 *(p++)不应该是先p++然后取值么,为什么是先取地址地址,再指针自增呢?

哦,知道了,确实是这样的

HansonCPT 发表于 2017-6-21 22:03:27

qq小小七 发表于 2017-6-21 10:41
哦,知道了,确实是这样的

一起进步,我是搜整个论坛关键字“指针”,看了论坛的关于指针的部分帖子,慢慢理解了指针的部分内容,还是有很多不解{:5_109:}
页: [1]
查看完整版本: 指针问题