加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

使用指针增加变量

发布时间:2020-12-16 10:27:06 所属栏目:百科 来源:网络整理
导读:我对处理指针很新,而且我的C知识相当小.我想了解指针.我编写了以下代码来打印变量列表(a到f),如下所示: 012345 我编写了以下代码来执行此操作: #include stdio.hint main(){ int a,b,c,d,e,f; int *p; int i; a = b = c = d = f = 0; p = a; for (i = 0; i
我对处理指针很新,而且我的C知识相当小.我想了解指针.我编写了以下代码来打印变量列表(a到f),如下所示:

0
1
2
3
4
5

我编写了以下代码来执行此操作:

#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("%dn",*p);
    p++;
  }
  return 0;
}

这个想法是它通过变量和增量逐个增加数量(i).我假设你在同时初始化变量时,它们会在内存中彼此相邻.但是,我得到以下输出:

0
1
2
3
-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("%dn",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.如果你运行这个程序,你会看到

0
1
2
3 
4
5

在控制台上.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读