C语言———指针数组与数组指针

数组指针:【存储类型】数据类型 (*指针名)【下标】=值

该指针存放着一个数组的首地址,或者指针指向一个数组的首地址

如:int(*p)[3]; ---> type name; --->int[3] *p; 定义指针*p指向int[3]的首地址

代码如下:

int main()
{
        int a[2][3]={1,2,3,4,5,6};
        int i,j;
        int *p= *a;   //注意a为行单位变化,p为列单位变化但无法跳转行,只能按列逐位移动
        int (*q)[3]=a;  //q+1一次跳转int a[3], 所以作用与 a+1一致,3最合理,
//其他数不恰当
   
       p = &a[0][0];
       for(i = 0;i<6;i++,p++)
                printf("%d ",*p);   
        printf("\n");

        printf("%p %p\n",a,a+1);
        printf("%p %p\n",q,q+1); //此处a与q是一样的

        for(i = 0;i<2;i++)
        {
        for(j=0;j<3;j++)
        {
        printf("%p-->%d\n ",*(a+i)+j,*(*(a+i)+j));//所以,此处a可以直接替换为q。
        }
        printf("\n");
        }
        exit(0);
}

指针数组:【存储类型】数据类型 *数组名【长度】

该数组的所有元素都是指针类型

如:int *arr[3]; --->TYPE NAME; -->int *[3] arr;即arr包含3个指针变量的int*

代码如下:

int main()
{
        int i, k, j;
        char *tmp;
        char *name[5] = {"Follow me","Basic","Great","Fortran","Computer"};
//char *与一级指针char用法相同
        for(i = 0; i < 5-1; i++)
        {
        k = i;
        for(j=i+1; j<5;j++)
        {
                if(strcmp(name[k],name[j]) > 0)
                k = j;
        }
        if(k != i)
        {
                tmp = name[i];
                name[i] = name[k];
                name[k]= tmp;
        }
        }
        for(i=0;i<5;i++)
                puts(name[i]);
exit(0);
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值