加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 声明指针数组的问题

发布时间:2020-12-16 10:43:07 所属栏目:百科 来源:网络整理
导读:当我执行此代码时 #includestdio.hint main() { int (*x)[5];printf("nx = %unx+1 = %unx = %unx + 1 = %u",x,x+1,x,x+1);} 这是C或C中的输出: x = 134513520x+1 = 134513540x = 3221191940x + 1 = 3221191944 请解释.还有什么区别: int x [5]和int(*
当我执行此代码时

#include<stdio.h>

int main() {
 int (*x)[5];
printf("nx = %unx+1 = %un&x = %un&x + 1 = %u",x,x+1,&x,&x+1);
}

这是C或C中的输出:

x = 134513520
x+1 = 134513540
&x = 3221191940
&x + 1 = 3221191944

请解释.还有什么区别:

int x [5]和int(* x)[5]?

解决方法

> int x [5]是一个包含5个整数的数组
> int(* x)[5]是一个指向5个整数数组的指针

增加指针时,会增加指向类型的大小.因此,x 1是大于x的5 * sizeof(int)字节 – 给出8048370和8048384十六进制值,差值为0x14或20.

& x是指向指针的指针 – 所以当你递增它时你添加sizeof(指针)字节 – 这给出了bf9b08b4和bf9b08b8十六进制值,相差4.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读