012345
我编写了以下代码来执行此 *** 作:
#include <stdio.h>int main(){ int a,b,c,d,e,f; int *p; int i; a = b = c = d = f = 0; p = &a; for (i = 0; i < 5; i++){ *p += i; printf("%d\n",*p); p++; } return 0;}
这个想法是它通过变量和增量逐个增加数量(i).我假设你在同时初始化变量时,它们会在内存中彼此相邻.但是,我得到以下输出:
0123-1218283607
如果我将for循环更改为仅从0到3(i <4),它工作正常,打印机0 1 2和3.但是当我希望打印变量f时,它似乎没有设置它. 正如我所说,我对指针很新,所以我可能忽略了一些愚蠢的东西,但我一直在仔细研究我的代码,试图解决它. 提前致谢.
解决方法 无法保证a,e和f在内存中相邻.如果您需要这种保证,则需要使用数组.#include <stdio.h>int main() { int a[6]; int *p; int i; a[0] = a[1] = a[2] = a[3] = a[4] = a[5] = 0; p = &a[0]; for (i = 0; i < 6; i++){ *p += i; p++; } for(i = 0; i < 6; i++) { printf("%d\n",a[i]); } return 0;}
这里int [6]声明一个名为a的数组,它可以容纳六个整数.这六个整数可以通过[0],[1],[2],[3],[4]和[5]得到.保证a [0],a [1],a [2],a [3],a [4]和[5]在内存中连续排列.这样就行了
p = &a[0];
将p设置为第一个元素的地址.此指针的每个增量都会向前移动数组中的一个位置.
第二个for循环显示第一个for循环在{0,1,2,3,4,5}中正确地为i设置了[i]到i.如果你运行这个程序,你会看到
0123 45
在控制台上.
总结以上是内存溢出为你收集整理的使用指针增加变量全部内容,希望文章能够帮你解决使用指针增加变量所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)