面试题-指针-指针数组与数组指针

返回目录:https://blog.csdn.net/chen1083376511/article/details/82723709

问题:

问:int (*p)[n]与int *p[n]的区别?

答:

1.int (*p)[n]是数组指针,指向某n个元素所组成的整块的数组,返回值是整型指针类型的。

2.int *p[n]是指针数组,指向数组里面的每个元素,即p指向第一个元素,p[1]指向第二个元素,以此类推,p[n-1]指向第n-1个元素,返回值是整型的。

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------

问题:
问:下面代码的输出结果是什么?
void main()
{
 int arr[][3] = { 1, 2, 3, 4, 5, 6 };
 int(*ptr)[3] = arr;
 printf("%d %d\n",(*ptr)[0],(*ptr)[1]);
 ptr++;
 printf("%d %d\n", (*ptr)[0], (*ptr)[1]); 
}

答:1 2 4 5
分析:
int(*ptr)[3] = arr;指向整型数组的指针,数组包含3个元素,也就是说ptr这个指针指向包含了3个元素的一维数组,并且指向arr的首地址。
如果ptr++,ptr指向数组的下一个包含3个元素的一维数组。
小结:
int (*ptr)[n]指向int a[n]这整块数组。
详细分析,请看下一题。
-----------------------------------------------------------------------------------------------------------------------------------------------

问题:

问:下面代码的输出结果是什么?
void main()
{
 int arr[6] = { 1, 2, 3, 4, 5, 6 };
 int(*ptr)[6] = &arr;
 printf("%d,%d,%d,%d,%d,%d\n", (*ptr)[0], (*ptr)[1], (*ptr)[2], (*ptr)[3], (*ptr)[4], (*ptr)[5]);
 ptr++;
 printf("%d %d\n", (*ptr)[0]);

}
答:

1,2,3,4,5,6
-858993460(随机)

分析:

void main()
{

  • 5
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值