刘加加在成长(C++语言学习中)

学习、工作、生活,这是三个问题。

  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  38 随笔 :: 0 文章 :: 24 评论 :: 0 Trackbacks

对指针可以进行赋值求值取值取指针的地址将一个指针加上一个整数增加指针的值求差值的操作。请参看以下代码展示了几种情形:

#include<stdio.h>
int main(void)
{
    
int urn[5]={100,200,300,400,500};
    
int *p1,*p2,*p3;
    
    p1
=urn;         //把一个地址赋给指针 
    p2=&urn[2];     //取得urn[2]的地址,并赋给一个指针
    
    printf(
"数组各个元素的值和地址:\n"); 
    
for(int i=0;i<5;i++)
    {
        printf(
"urn[%d]=%d   &urn[%d]=%p;\n",i,urn[i],i,&urn[i]);
    }
    
    printf(
"\n指针指向的地址,指针指向地址的值,指针的地址\n");
    printf(
"p1=%p    ,*p1=%d         ,&p1=%p",p1,*p1,&p1); 

    printf(
"\n指针加上整数的效果(指针+int!=指针,指针+int==地址):\n");
    printf(
"p1+4=%p,*(p1+4)=%d",p1+4,*(p1+4));
    
    
//printf("&(p1+4)=%p",&(p1+4))//error:p1+4是一个地址,不能对其进行取地址操作,但可以将p1+4赋给一个指针 
    
    p1
++;//p++==p1+1。p1+1是一个地址,将p1+1赋给p1
    printf("\n在p1++以后:\np1=%p    ,*p1=%d         ,&p1=%p\n",p1,*p1,&p1);
    
    
//求两个指针差值 
    printf("\np2=%p,p1=%p,p2-p1=%d\n",p2,p1,p2-p1); 
    
    getchar();
    
return 0;
}
posted on 2008-05-19 19:08 刘加加 阅读(646) 评论(0)  编辑 收藏 引用 所属分类: 学习C语言

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理