c++指针 c指针 改变值

1.
#include <iostream>

using namespace std;

void move(int *p)    ====>void move(*&p)
{

    p++;
}

int main()
{
    int attr[]={1,2,3,4,5};
    int *p=attr;
    cout<<*p<<endl;
//    p++;
    move(p);
    cout<<*p<<endl;
    return 0;
}


为什么第二次打印 值不变 ,指针也是变量,传指针是可以改变值,但你这里 :改变的是指针值(地址),没有改变指针指向的值
换成move(*&p) 可破
2.c语言写的这个
 #include <stdio.h>
void move(int* p) 
{

    ++p;  
   printf("%d \n",*p);
 }
                
   int main()
   {   
       int attr[]={1,2,3,4,5};
       int *p=attr;
   printf("%d \n",*p);
              //    p++;
       move(p);
   printf("%d \n",*p);
    return 0;
 } 
 
这样的话。
#include <stdio.h>

void move(int** p);

int main(void)
{
    int arr[]={34,55,26,35,64,74};
    int *p=arr;

    printf("%d \n",*p);
    move(&p);
    printf("222222222   %d \n",*p);
     return 0;
}
void move(int** p)
{
     (*p)++;
     printf("insert %d \n",**p);
}
View Code

 

posted @ 2014-10-27 18:08  義丨往昔灬miller  阅读(295)  评论(0编辑  收藏  举报