C语言指针【一】

学习目标:

学习C语言指针的基本用法
(声明 ; 定义 ; 遍历访问)

学习内容:

  1. 指针
  2. 指针数组
  3. 数组指针
  4. 二维数组指针

学习内容:

1.指针

#include<stdio.h>
#include<stdlib.h>

int main()
{
    printf("\n*1*\n");
    {
        //1.指针
        int a = 1;
        int b = 'a';
        int *pa = &a;
        int *pb = &b;
        printf("%p\t%d\n",pa,*pa);
        printf("%p\t%c\n",pb,*pb);
    }
	return 0;
}

2.指针数组

#include<stdio.h>
#include<stdlib.h>

int main()
{
    printf("\n*2*\n");
    {
        //2.指针数组
        int a[] = {1,2,3};
        char b[] = {"abc"};
        int *pa[3];
        char *pb[3];
        int i,j;
        for(i=0;i<3;i++)
        {
            pa[i] = &a[i];
            pb[i] = &b[i];
        }
        for(j=0;j<3;j++)//循环赋值法
        {
            printf("%d\t",*pa[j]);
        }
        printf("\n");
        for(j=0;j<3;j++)
        {
            printf("%c\t",*pb[j]);
        }
        printf("\n");
    }
	return 0;
}

3.数组指针

#include<stdio.h>
#include<stdlib.h>

int main()
{
   printf("\n*3*\n");
    {
        //3.数组指针
        int a[] = {11,22,33};
        char c[] = {'a','b','c'};
        int (*pa)[3];
        char (*pc)[3];
        pa = a;
        pc = c;
        int i;
        for(i=0;i<3;i++)
        {
            printf("%p :  %d\n",(pa+i),*(*pa+i));
            //方式一:注意有两次取值操作
        }
        for(i=0;i<3;i++)
        {
            printf("%p :  %c\n",(pc+i),(*pc)[i]);//方式二
        }
    }

	return 0;
}

4.二维数组指针

#include<stdio.h>
#include<stdlib.h>

int main()
{
    printf("\n*4*\n");
    {
        //3.二维数组指针
        int a[2][3] = {1,2,3,11,22,33};
        char c[2][3] = {"abc","def"};
        int (*pa)[3];
        char (*pc)[3];
        pa = a;
        pc = c;
        int i,j;
        for(i=0;i<2;i++)
        {
            for(j=0;j<3;j++)
            {
                printf("%p :  %d\t",(*(pa+i)+j),*(*(pa+i)+j));
            }
            printf("\n");
        }
        for(i=0;i<2;i++)
        {
            for(j=0;j<3;j++)
            {
                printf("%p :  %c\t",(*(pc+i)+j),*(*(pc+i)+j));
            }
            printf("\n");
        }
	return 0;
}
/*本文代码输出
注:数据地址在不同的操作环境中的运行结果不同

*1*
000000000061FDD4        1
000000000061FDD0        a

*2*
1       2       3
a       b       c

*3*
000000000061FD74 :  11
000000000061FD80 :  22
000000000061FD8C :  33
000000000061FD71 :  a
000000000061FD74 :  b
000000000061FD77 :  c

*4*
000000000061FD50 :  1   000000000061FD54 :  2   000000000061FD58 :  3
000000000061FD5C :  11  000000000061FD60 :  22  000000000061FD64 :  33
000000000061FD4A :  a   000000000061FD4B :  b   000000000061FD4C :  c
000000000061FD4D :  d   000000000061FD4E :  e   000000000061FD4F :  f
*/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值