Par*_*bin 1 c arrays pointers garbage
我编写了一个C程序,用于使用指针显示数组的值.这是代码:
#include <stdio.h>
int main()
{
int a[] = {1, 1, 1, 1, 1};
int *ptr = a;
for (int i = 0 ; i < 5; i++)
printf("%d ", *ptr++);
printf("%d", *ptr);
}
Run Code Online (Sandbox Code Playgroud)
正如您在终止循环后所看到的那样,指针将数值的内存地址保存在数组之外.因为它没有初始化最后一个输出,它应该是一个垃圾值.但是,每次显示5是数组的大小.然后,我认为数组的已分配内存的下一个内存地址包含数组的大小.但是,双类型数组不会发生这种情况.
Output for int array : 1 1 1 1 1 5
Output for double array : 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 0.000000
Run Code Online (Sandbox Code Playgroud)
有人会解释输出吗?
这只是该地址中内存的值.您永远不应该访问未由您分配的内存(在这种情况下,您正在访问第6个元素,但您只声明了5个元素).这可能导致分段故障是一些情况.
| 归档时间: |
|
| 查看次数: |
124 次 |
| 最近记录: |