C语言基础、C语言指针、合适的数据类型、内存中的数值的疑问

发布于 2022-09-02 14:56:32 字数 384 浏览 18 评论 0

下面的代码输出结果会是什么?是我以前老师给我的,当时弄明白了,最近重看又是一脸懵逼,求解释啊!

int a[1024];
int i = 0;
char c = 300;
short *p;
for(i;i<1024;i++)
{
    *(a+i) = i;
}
p = &a+1;
p--;
printf("%d %d",*p,c);   

:输出结果还需要分“大字节序”“小字节序”两种情况,谢谢各位大神!

另外多问一个问题

int *a[3];
int (*a)[3];

这两者有什么区别吗?我想问的是括号在这种数据类型的声明、定义中,与*的优先级

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

追风人 2022-09-09 14:56:33

aint数组。一般是4个字节一个。short一般是两个字节一个。用一个两个字节的指针去access 4个字节为单元的地址,就要考虑 big endian 还是 little endian啦。

[][][][]
^ 这里
    ^ 还是这里
     
很糊涂小朋友 2022-09-09 14:56:33

int *a[3];
int (*a)[3];

[ ]优先级大于*

第一个等价于 ( int ※ ) a[ 3 ] ,创建一个数组 a[ 3 ],数组每个元素是一个指针(int*)

第二个 表达式看上去,很绕。先看看一个好理解的。
int pa[ 3] ;
a = & pa;
a 其实是一个指向数组的指针,类型可以理解为 int **

一个很有趣的点,a++,a指针向后移动12个字节( 3*4),好好的结合二维数组理解

葬花如无物 2022-09-09 14:56:32

输出不仅要分字节序讨论,还得就int和short所占的字节进行讨论。你没说你的编译器上这两个分别占几字节。。。
我得知道sizeof(int)和sizeof(short)是多少。。。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文