【C】语言 指针(指针数组 字符、函数、数组指针)等

本文介绍了指针数组的概念,它与整型和字符数组的区别,以及如何通过指针数组模拟二维数组。同时讲解了字符指针和数组指针的区别,指出数组指针本质上是存放数组地址的指针变量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、指针数组

我们 类比一下:
整型数组 - 存放整型数据的数组 (数组中的每个元素是整型类型)
字符数组 - 存放字符数据的数组 (数组中的每个元素是字符类型)
指针数组 - 存放指针的数组(数组中的每个元素是指针型)、
int arr[10]; 整型数组                希望有一个数组,数组有4个元素, 每个元素是整型指针
                                                  int* arr[4];     每个元素是整型指针,所以是指针数组
char ch[5];//字符数组

double data(4];浮点型数组
指针数组呢--------是存放指针的数组。
1.指针数组模拟⼆维数组

#include <stdio.h>
int main()
{
 int arr1[] = {1,2,3,4,5};
 int arr2[] = {2,3,4,5,6};
 int arr3[] = {3,4,5,6,7};
 //数组名是数组⾸元素的地址,类型是int*的,就可以存放在parr数组中
 int* parr[3] = {arr1, arr2, arr3};
 int i = 0;
 int j = 0;
 for(i=0; i<3; i++)
 {
 for(j=0; j<5; j++)
 {
 printf("%d ", parr[i][j]);
 }
 printf("\n");
 }
 return 0;
}

parr[i]是访问parr数组的元素,parr[i]找到的数组元素指向了整型⼀维数组,parr[i][j]就是整型⼀维数 组中的元素。

上述的代码模拟出⼆维数组的效果,实际上并⾮完全是⼆维数组,因为每⼀⾏并⾮是连续的。

二、字符指针变量

在指针的类型中我们知道有⼀种指针类型为字符指针 char* ;

代码 const char* pstr = "hello bit."; 特别容易让同学以为是把字符串 hello bit 放
到字符指针 pstr ⾥了,但是本质是把字符串 hello bit. ⾸字符的地址放到了pstr中。
 

char* p ="abcdef";

//不是把字符串abcdef\0存放在p中,而是把第一个字符的地址存放在p中

//printf("%c n",*p);

三、数组指针变量

1. 数组指针变量是什么?
之前我们学习了指针数组,指针数组是⼀种数组,数组中存放的是地址(指针)。
数组指针变量是指针变量?还是数组?
答案是:指针变量。
类比一下:
• 整形指针变量: int * pint; 存放的是整形变量的地址,能够指向整形数据的指针。
•  浮点型指针变量: float * pf; 存放浮点型变量的地址,能够指向浮点型数据的指针。
那数组指针变量应该是:存放的应该是数组的地址,能够指向数组的指针变量。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值