指针预测输出
Pointers predict the output
#include <stdio.h>
void main (void){
int mat [5][5],i,j;
int *p;
p = &mat [0][0];
for (i=0;i<5;i++)
for (j=0;j<5;j++)
mat[i][j] = i+j;
printf ("%dt", sizeof(mat)); i=4;j=5;
printf( "%d", *(p+i+j));
}
谁能帮我处理一下这段代码的输出?我知道(mat)的尺寸将打印50。但请帮我打印第二张
*(p+i+j)
将打印存储在地址p + i*sizeof(int) + j*sizeof(j)
由于数组以线性方式存储在堆栈中,i equals 4
和j equals 5
将显示数组的第9个整型值,因此mat[1][4]
等于5
同样对于sizeof(mat)
的结果,它将是5*5*sizeof(int)
。我假设这里的int存储在两个字节上,因为你说它会打印50,但这完全取决于你的计算机。在今天的计算机上,它通常是4字节长,所以它也可以打印100
。
尝试将第二句语句更改为:
printf("%d",*(p)+i+j );
我猜你的意思是打印p
所指向的值和存储在i
和j
中的值
相关文章:
- 用指针预测输出
- 当使用通配符和null指针调用函数时,对输出的说明
- 以下与指针相关的代码的输出是什么?
- 用于输出矩阵的二维指针
- 为什么数组到指针的输出不相关
- 重载 ostream << 运算符,指针作为参数,导致输出上的内存地址
- 指针和类,输出
- 空指针(为缺少的输出数组调用的 create() 在 create,文件 /home/m/OpenCV/modules/
- 如何调试输出指向成员的指针
- 当(错误)将指针指向指针时,我将如何收到以下输出
- 如何传递unique_ptr<T>代替原始*输出*指针参数?
- 为什么 c_str() 在返回常量指针值时不输出地址
- C++指针输出一致性
- x86 上的指针大小和奇怪的字符输出
- 从未初始化的 C++ 指针仍输出为已初始化
- 多重输出指针到C 中的文件
- 如何在 c++ 中输出指针对象的属性(具有 2 个或更多属性)
- 输出指针上的const前缀
- 控制台在输出指针数组和C++迭代时崩溃
- 打印字符串流输出指针