我不想搞砸我的内存或制造与内存相关的问题/错误。 那么..在切换/更改指向的变量指针之前我需要做什么?
或者......我做的很好吗?
这是我的源代码:
#include <stdio.h>
int main(int argc, char *argv[])
{
int x = 10;
int y = 87;
int arr[5] = {1,2,3,4,5};
int *ptr;
ptr = &x;
printf("Now ptr pointed to x --> *ptr = %d ~ ptr address: %p \n", *ptr, ptr);
ptr = &y;
printf("Now ptr pointed to y --> *ptr = %d ~ ptr address: %p \n", *ptr, ptr);
ptr = arr;
printf("1st 2 byte: %d \n", *ptr);
*ptr++;
printf("2nd next 2 byte: %d \n", *ptr);
*ptr++;
printf("3rd next 2 byte: %d \n", *ptr);
*ptr++;
printf("4th next 2 byte: %d \n", *ptr);
// Now i want to switch to x again :D
ptr = &x;
printf("Now ptr pointed to x AGAIN --> *ptr = %d ~ ptr address: %p \n", *ptr, ptr);
return 0;
}
请启示。
谢谢
答案 0 :(得分:1)
你所拥有的东西似乎不是问题。指针只是改变指向的位置,但这些背景变量根本没有改变。只要main函数正在运行,变量x,y和你的数组就会处于活动状态,因为它们在main的范围内。如果你希望它们在更短的时间内存活,你可以将它们限制为从main调用的其他函数。
void xVariable()
{
int x = 7;
}
int main()
{
int y = 8;
xVariable();
for(int i = 0; i < 9; i++)
{
int z = 9;
}
return 0;
}
在这个例子中,y将在整个程序运行中存活。 x将仅在xVariable函数运行时处于活动状态。 i和z仅在循环持续时间内存活。这是变量范围如何工作的基本示例,但如果内存变得很重要,我建议您进一步查看。