码迷,mamicode.com
首页 > 其他好文 > 详细

指针的用法

时间:2015-05-17 10:35:08      阅读:184      评论:0      收藏:0      [点我收藏+]

标签:

             大家都应该知道, 指针是个什么玩意儿, 它就是用来存另一个变量的地址的。这玩意儿在程序中容易引起不易察觉的错误, 而且会给调试带来莫大的困难。 尽管如此,它现在依然存在着, 这就从另一方面说明了, 它的功能爆表。 在实现链式存储, 图, 树, 森林时, 大都要用指针。 不仅如此, 在访问多维数组,函数参数传递时, 也多用指针。下面给出指针的一些常用的用法代码。

    

技术分享
/*指针的声明及一般用法*/
/*________________________________________________________________*/ 
//声明:
int a;
int *p=&a;

int a;
int *p;
p=&a;

#include<stdio.h>
int main()
{
    int a, b;
    int *ipointer1, *ipointer2;
    scanf("%d%d", &a, &b);
    ipointer1 = &a;
    ipointer2 = &b;
    printf("The number is:%d %d\n", *ipointer1, *pointer2);
} 

#include<stdio.h>
int main()
{
    int *p, q;
    p=&q;
    scanf("%d", p);//另类写法。 
    printf("%d\n", q);
    return 0;
}

//&*和*&的区别, &和*的优先级相同。运算顺序从左向右。
#include<stdio.h>
int main()
{
    int i;
    int *p;
    scanf("%d", &i);
    p=&i;
    printf("%d\n", *&i);
    printf("%d\n", i);
    printf("%d\n", *p);
    printf("%d\n", &*p);
    return 0;
} 

//指针的自增自减。 
#include<stdio.h>
int main()
{
    int i;
    int *p;//将变量i的地址赋给指针变量。 
    scanf("%d", &i);
    p=&i;
    printf("%d\n", p);
    p++;//指针变量加1, 这里的加 1 并不代表一个字节与*p的类型有关。 
    printf("%d\n", p);
    return 0;
} 

//一维数组与指针
int *p, a[10];
p=&a;

int *p, a[10];
p=&a[0];

#include<stdio.h>
int main()
{
    int *p, *q, a[5], b[5], i;
    p=&a[0];
    q=b;//数组名就代表地址。 
    for(i=0; i<5; i++)
    scanf("%d", &a[i]);
    for(i=0; i<5; i++)
    scanf("%d", &b[i]);
    for(i=0; i<5; i++)
    printf("%5d", *(p+i));
    printf("\n");
    for(i=0; i<5; i++)
    printf("%5d", *(q+i));
    return 0;
}
#include<stdio.h>
int main()
{
    int *p, *q, a[5], b[5], i;
    p=&a[0];
    q=b;
    for(i=0; i<5; i++)
    scanf("%d", p++);
    for(i=0; i<5; i++)
    scanf("%d", q++);
    p=a;//使指针变量p,q 重新指向数组起始位置。 
    q=b;
    for(i=0;i<5; i++)
    printf("%5d", *p++);
    printf("\n");
    printf("%5d", *q++);
    return 0;
} 
//二维数组与指针。 
#include<stdio.h>
int main()
{
    int a[3][5], i, j;
    for(i=0; i<3; i++)
    {
        for(j=0; j<5; j++)
        scanf("%d", a[i]+j);
    }
    for(i=0; i<3; i++)
    {
        for(j=0; j<5; j++)
        printf("%5d", *(a[i]+j));
        printf("\n");
    }
    return 0;
}

//
#include<stdio.h>
int main()
{
    int a[3][5], i, j, *p;
    p=a[0];
    for(i=0; i<3; i++)
    {
        for(j=0; j<5; j++)
        scanf("%d", p++);
    }
}
p=a[0];
for(i=0; i<3; i++)
{
    for(j=0; j<5; j++)
    printf("%5d", *p++);
    printf("\n");
}

#include<stdio.h>
int main()
{
    int a[3][5], i, j, (*p)[5];
    p=&a[0];
    for(i=0; i<3; i++)        //控制二维数组的行数。 
    for(j=0; j<5; j++)       //控制二维数组的列数。 
    scanf("%d", (*(p+i))+j); //为二维数组中的元素赋值。 
    p=&a[1];                //*p为第一个元素的地址。 
    for(j=0; j<5; j++)
    printf("%5d", *((*p)+j));//输出二维数组中的元素。 
    printf("\n");
    return 0;
}
#include<stdio.h>
int main()
{
    int a[3][5], i, j;
    for(i=0; i<3; i++)
    for(j=0; j<5; j++)
    scanf("%d", *(a+i)+j);
    for(j=0; j<5; j++)
    printf("%5d", *(*(a)+j));
    printf("\n");
    return 0;
}

//
#include<stdio.h>
int main()
{
    char str1[]="you are beautiful", str2[30], *p1, *p2;
    p1 = str1;
    p2 = str2;
    while(*p1!=\0)
    {
        *p2 = *p1;
        p1++;
        p2++;
    }
    *p2=\0;
    printf("Now the string2 is:\n");
    puts(str2);
    return 0;
}
View Code

 

指针的用法

标签:

原文地址:http://www.cnblogs.com/acm1314/p/4509141.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!