C语言学习笔记(九) -指针上 Pointer

这篇博客详细介绍了C语言中的指针概念,包括指针变量、指针的指针、如何通过指针实现数据交换、指针与一维数组的关系、指针的递增和递减操作,以及如何使用指针来找到数组中的最大值和最小值。此外,还探讨了如何在输入10个整数后,用指针将最小值与数组首元素、最大值与数组末元素进行交换。最后,文章讨论了数组指针以及指针作为函数参数的应用。
摘要由CSDN通过智能技术生成

指针变量

/*
指针变量:用来保存地址的变量
        地址的获取 &
指针定义: 类型  指针名  值

 *星号的作用:取指针变量所指内存变量的值(*pa 取pa所指的值) 
 */

#include <stdio.h>
int main(void)
{
    int a=1234;
    int *pa=&a;   //定义一个指向整型的指针变量,&a获取整型变量a的值
    int *pb=(int*)0x12345678;

    int i=0x12345678;   //检测当前系统是小端还是大端
    char *pc=(char*)&i;

    //访问指针指向的内存的值(*p)
    printf("%x\n",*pc);

    return 0;
}
/*
   使用指针实现数据交换
 */

#include <stdio.h>
void swap(int*,int*);

int main(void)
{
    int a,b;
    printf("请输入两个数:\n");
    scanf("%d %d",&a,&b);
    int *pa=&a;
    int *pb=&b;

    swap(pa,pb);
    printf("交换后的结果为:%d %d\n",a,b);
    return 0;
}

void swap(int *pa,int *pb)
{
    int temp;
    temp=*pa;
    *pa=*pb;
    *pb=temp;
}

指针的指针

/*
 定义完指针变量后,可以给pa赋一个地址,但不能直接使用*pa;
 当pa保存了一个有效的且合法的地址时,才可以使用*pa;
 */

#include <stdio.h>
int main (void)
{
    int *pa=NULL;//指针在没有赋予初值时,一般用NULL初始化
    // *pa=12;  //不能访问内存单元,可以访问地址单元
    int a=4;
    *&a; //首先对a取地址,然后访问改地址中存储的值
    //&*a;  //错误,不能对a取值
    pa=&a;    //*pa=a;  pa=&a;
    *&pa;//首先对pa取地址,然后访问改地址中存储的值,整个表达式的结果时a的地址
    &*pa;//首先取pa所指的单元a,之后取a的地址,表达式结果时a的地址


    //指针的指针,指向指针变量的指针变量
    int **ppa=&pa;
    //**ppa=*pa=a;

    printf("&ppa=%p\n",&ppa);
    printf("ppa=%p &pa=%p\n",ppa,&pa);     //ppa=&pa
    printf("*ppa=%p pa=%p &a=%p\n",*ppa,pa,&a);  //*ppa=pa=&a;
    printf("**ppa=%d 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值