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

**

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

**
C语言指针学习(6)指针数组-字符指针数组_第1张图片
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

应用场合:将来如果要定义大量同类型的指针变量时,要想起采用指针
数组的形式简化代码
C语言指针学习(6)指针数组-字符指针数组_第2张图片
C语言指针学习(6)指针数组-字符指针数组_第3张图片

C语言指针学习(6)指针数组-字符指针数组_第4张图片
C语言指针学习(6)指针数组-字符指针数组_第5张图片
**

二、字符指针数组

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

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

C语言指针学习(6)指针数组-字符指针数组_第6张图片
C语言指针学习(6)指针数组-字符指针数组_第7张图片
C语言指针学习(6)指针数组-字符指针数组_第8张图片
C语言指针学习(6)指针数组-字符指针数组_第9张图片

C语言指针学习(6)指针数组-字符指针数组_第10张图片
C语言指针学习(6)指针数组-字符指针数组_第11张图片

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

#include
 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

可复制代码2

#include
  int main()
  {
      //1、形式1
      char *p[]={"abc","efg"};
      int len=sizeof(p)/sizeof(p[0]);
  
      //读查看 
      for(int i=0;iB,"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;iB,z->Z
     a[0][1]='B';
     a[1][2]='Z';
      for(int i=0;i<2;i++)
          printf("%s\n",a[i]);
  }

你可能感兴趣的:(Linux_C语言学习,字符串,指针,c语言)