24/08/18C语言指针数组和数组指针

指针数组

定义

指针数组是一个数组,其中每个元素都是一个指针

指针数组就是一个数组,它的元素类型是指针

声明方式

int *arr[10];

arr是一个数组,包含10个元素,每个元素都是一个指向int类型的指针。

arr[i]是一个指针,可以指向一个int类型的变量

使用场景

指针数组通常用于保存多个地址,例如字符串数组,其中每个元素可以指向一个字符串的起始位置

char *s[] = {"hello","linux","world"}; 

这里的s是一个指针数组,数组中的每个元素都是指向字符数组(字符串)的指针

s[1]存储的是字符串hello的起始地址

s[2]存储的是字符串linux的起始地址

s[3]存储的是字符串world的起始地址

每个s[i]都是一个指向字符数组的指针(即字符串),而s本身是一个指针数组

访问元素

char c = s[2][0];

这个表达式首先访问s[2]获得字符串"world"的地址,然后通过[0]访问字符串中的第一个字符

c = 'w'

数组指针

定义

数组指针是一个指针,它指向一个数组

与指针数组不同的是,指针数组本身是一个单一的指针,而不是一个数组

声明方式

int (*p)[10];

这里的p是一个指针,它指向一个包含10个int类型元素的数组。

p是指向数组的指针,而不是指针的数组

int arr[5] = {1,2,3,4,5};

int (*p)[5] = &arr;

p是一个指向包含5个int元素的数组的指针,它指向整个数组arr,而不是单个元素

访问元素

int value = (*p)[2];//3

这个表达式中:*p解引用数组指针p,得到arr数组,然后[2]访问数组的第三个元素

使用场景

数组指针常用于处理多维数组或在函数中传递数组时保留数组的维度信息

int  arr[10];

int (*p)[10] = &arr;

这里p是指向数组arr的指针

区分

指针数组

int * arr[10];

arr是一个包含10个指向int类型数据的指针的数组

arr[i]表示第i个指针,可以解引用访问到具体的int数据,例如*arr[i]

常用于处理字符串数组、指针表或函数指针数组。例如处理多个字符串,或者创建一个数组,其中每个元素都是一个指向函数的指针

数组指针

int (*p)[10];

p是一个指向包含10个int类型元素的数组的指针

(*p)[i]表示数组中的第i个元素

常用于在函数中传递多维数组,保持数组的维度信息。尤其是在处理动态数组或矩阵时非常有用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值