C语言指针易混淆概念

文章详细阐述了C语言中指针数组和数组指针的概念,例如`int*a[10]`是一个包含10个整型指针的数组,而`int(*a)[10]`是一个指向含有10个整数的数组的指针。同时解释了`int**p`作为双指针的用法,以及如何通过`p=&q[0];`将指针数组的首地址赋值给双指针。在给出的示例中,`fun(char**p)`函数接收一个字符串指针数组,并打印出每个字符串。在`main()`函数中,字符串数组`char*q[3]`被传递给`fun()`进行处理。
摘要由CSDN通过智能技术生成
  1. int *a[10] 这个是指针数组,数组a中有10个整型的指针变量;a[0] ~a[9]
  2. int (*a)[10] 这个是数组指针,指向一个数组,+1是指向下个数组;
  3. int **p 保存指针的地址;
常见用法1int **p;
int *q;
p = &q;
常见用法2int **p;
int *q[10];
q是指针数组的名字,是指针数组的首地址,是q[0]的地址;q[0]int * 类型的指针,所以q[0] 指针变量的地址,是int ** 类型;
p = &q[0];
等价于 p = q;
void fun(char **p)
{
	int i;
	for (i = 0;i < 3;i++)
	{
	    printf("%s\n",p[i]);
	}
}
int main()
{
  char *q[3] = {"hello","world","China"};
  fun(q	);
  return  0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值