C语言指针学习(6)指针数组-字符指针数组

**

一、指针数组(比较常见)

**
在这里插入图片描述
2、指针数组定义:数组中每个元素都是一个指针(地址)
每个元素只能是地址,不能是普通数据
3、定义指针数组的语法:
数据类型 *数组名[数组长度/元素个数]={地址列表};
例如:

int a=10,b=20,c=30l
int *p[3]={&a,&b,&c};
结果:p[0]=&a;p[1]=&b;p[2]=&c;
等价:*(p+0)=&a;*(p+1)=&b;*(p+2)=&c;

取值:*p[0]=10; *p[1]=20; *p[2]=30;
		等价于
		**(p+0)=10; **(p+1)=20; **(p+2)=30

应用场合:将来如果要定义大量同类型的指针变量时,要想起采用指针
数组的形式简化代码
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
**

二、字符指针数组

**
定义:字符指针数组中每个元素是一个字符串的首地址
例如:

  char *p[2] = {"abc", "efg"};   
  或者
  char *p1 = "abc";
  char *p2 = "efg";
  char *p[2] = {p1, p2}; 
  结果:
  p[0] = p1 = "abc" = 第一个字符串的首地址
  p[1] = p2 = "efg" = 第二个字符串的首地址

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

可复制代码如下:
可复制代码1:

#include<stdio.h>
 int main()
 {
     int a=10,b=20,c=30;
     int *p[3]={&a,&b,&c};
     int length=sizeof(p)/sizeof(p[0]);//计算元素个数
 
     for(int i=0;i<length;i++)
         printf(" %d %d\n",*p[i],**(p+i));//2种打印方式
     for(int i=0;i<length;i++)//扩大十倍
         *p[i]*=10;
     for(int i=0;i<length;i++)
         printf(" %d %d\n",*p[i],**(p+i));//2种打印方式
 
 }

可复制代码2

#include<stdio.h>
  int main()
  {
      //1、形式1
      char *p[]={"abc","efg"};
      int len=sizeof(p)/sizeof(p[0]);
  
      //读查看 
      for(int i=0;i<len;i++)
          printf("%s %s\n",p[i],*(p+i));
  
      //尝试将“abc”的 ‘b’->B,"efg"的'g'->'G'
     // *(p[0]+1)='B';
     // *(p[1]+2)='G';
      //由于是字符串和指针的关系,所以是不允许修改的
  
      //2、形式2
      //要想修改需要使用数组形式
      char *p1="mnl",*p2="xyz";
      char *p3[]={p1,p2};
      //读查看
      for(int i=0;i<len;i++)
          printf("%s %s\n",p3[i],*(p3+i));
  
      //形式3:采用二维数组来实现字符串修改
      char a[][4]={{'a','b','c','\0'},{'x','y','z','\0'}};
     //修改为b->B,z->Z
     a[0][1]='B';
     a[1][2]='Z';
      for(int i=0;i<2;i++)
          printf("%s\n",a[i]);
  }
  • 5
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

永栀哇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值