指针进阶(一)(C语言)

欢迎来到C语言的世界 
博客主页:卿云阁

欢迎关注点赞收藏⭐️留言

本文由卿云阁原创!

本阶段属于锻体阶段,希望各位仙友顺利完成突破

首发时间:2021年1月17日

✉️希望可以和大家一起完成进阶之路!

作者水平很有限,如果发现错误,请留言轰炸哦!万分感谢!


目录

0️⃣指向一维数组的指针

1️⃣指针数组 

2️⃣二维数组名作为数据的指针数组

指针进阶(一)(C语言)_第1张图片

0️⃣✨✨✨指向一维数组的指针✨✨✨

指向一维数组的指针指向的类型类型是一个一维数组。定义一个指向一维数组的指针变量格式如下。

数据类型 (*指针变量名)[n]; 

意思是定义了一个指针变量,这个指针变量指向具有n个元素的一维数组,且这个一维数组中每个元素都是给定的数据类型。

1.ch指向由十个char类型的数据组成的一维数组

#include 
int main(void)
{

    char str[3][10]={"123","456","789"};
    char(*ch)[10];
    ch=str+1;               //ch可以赋值,str不能赋值 
    putchar(ch[0][1]);      //ch[0]就相当于一维数组名str[1]
    putchar('\n');
    ch=ch+1;               //改变ch的值可以改变不同的数据
    putchar(ch[0][1]);     //ch[0]就相当于一维数组名str[2]
	
	return 0;
}

指针进阶(一)(C语言)_第2张图片

GIF动态图片

指针进阶(一)(C语言)_第3张图片

 2.

#include 
int main(void)
{

    int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
    int (*ch)[4],sum=0;
    for(ch=a;ch

指针进阶(一)(C语言)_第4张图片

GIF动态图片

指针进阶(一)(C语言)_第5张图片


1️⃣✨✨✨指针数组✨✨✨ 

   如果一个数组,它里面的变量全部是指针类型,且每个指针指向的数据类型相同,则称这种数组称为指针数组。定义指针数组的一般格式为:

数据类型 *数组名[n];

这实质上就是一个一维数组,只是它的元素存放的是指针值,数据类型不是其元素的数据类型,而是元素指向的数据类型。

1.

#include
int main(void)
{ 
  int a[3]={1,2,3};
  int b[3]={20,30,40};
  int c[3]={50,60,70};
  int *ar[3]={a,b,c}; 
  printf("%d\n",ar[0][1]);  //ar[0]就相当于一维数组名a
  printf("%d\n",ar[1][1]);
  printf("%d\n",ar[2][1]);
  return 0; 
}

指针进阶(一)(C语言)_第6张图片

指针进阶(一)(C语言)_第7张图片

2. 

#include 
int main(void)
{ 
  char a[2][10]={"hong","zhangdkfp"};
  char *p[2]={"hong","zhangdkfp"};
  printf("%d\n",p[0]);
  printf("%d\n",p[1]);
  printf("%s\n",p[0]);
  a[0][1]='A';
  printf("%c\n",a[0][1]);
  return 0; 
}

指针进阶(一)(C语言)_第8张图片

指针进阶(一)(C语言)_第9张图片

 指针进阶(一)(C语言)_第10张图片

p中存储的是两个串的首地址

指针进阶(一)(C语言)_第11张图片

系统已经把内存空间开辟了,每一个数据位置是一个变量区可以改变。指针数组可用来处理长度不一样字符数组问题,例如,要存一个班的学生姓名,如果用一个二维数组来存放这些数据,每一行必须事先固定好长度,这样短的姓名可能用不满一行的空间,造成空间浪费

指针进阶(一)(C语言)_第12张图片

 每一个数据位置是一个常量区不可以改变,  p[0][1]='A';是不能改变的。



2️⃣✨✨✨二维数组名作为数据的指针数组✨✨✨ 

#include
void main(void)
{
int a[2][2]={1,2,3,4,};
int b[2][2]={3,4,5,6};
int (*p[2])[5];//int[5] *p[2];(便于记忆)一维数组装的是地址指向5个整形组成的一行。 
p[0]=a;
p[1]=b;
printf("%d \n", p[0][0][1]);
printf("%d \n", p[1][0][1]);
} 

指针进阶(一)(C语言)_第13张图片

指针进阶(一)(C语言)_第14张图片

你可能感兴趣的:(C语言,c语言)