学c的萌新 发表于 2023-8-27 14:21:46

一维数组打印出内存空间,还有打印出每一个元素的具体数值,结果出现错误,没有数值

#include<stdio.h>
#include<stdlib.h>
#define _CRT_SECURE_NO_WARNINGS
void test01()
{
        int score = { 1,2,3,4,5,6,7,8,9 };
        printf("sizeof = %d\n", sizeof(score));
        for (; score <= 9; score++)
        {
                printf("%d\n", score);
                break;
        }


}

void main()
{

        test01;
        system("pause");
        return 0;

}

陶远航 发表于 2023-8-27 14:22:03

根据你提供的代码,我发现了一些错误和问题:

1. 在 main 函数中调用 test01 函数时,应该添加小括号 (),即 test01();。

2. 在 test01 函数中,score 应该是一个指针变量,而不是一个整数变量。因此,在循环条件和循环体中,应使用指针相关的操作。

3. 在循环体中,使用 score 时没有改变指针的值,导致进入死循环。你可能希望使用 score++ 来移动指针。

下面是修改后的代码:

#include <stdio.h>
#include <stdlib.h>
#define _CRT_SECURE_NO_WARNINGS

void test01() {
    int score = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };

    printf("sizeof = %d\n", sizeof(score));

    int* p = score;
    for (; p <= &score; p++) {
      printf("%d\n", *p);
    }
}

int main() {
    test01();
    system("pause");
    return 0;
}


修改后的代码会按照以下方式运行:

1. 首先,定义了一个名为 score 的整型数组,并初始化了其中的元素。

2. 然后,计算并打印出整个数组的大小。

3. 接着,使用指针 p 来遍历整个数组。p 初始化为 score 的首地址,然后逐步增加指针的值,直到遍历完全部元素。在每次循环中,打印出当前指针所指向的元素值。

4. 最后,调用 system("pause"); 来停留在结果界面。

希望这能帮助到你。如果还有其他问题,请随时提问。
如果问题已经解决,请设置最佳答案

isdkz 发表于 2023-8-27 14:24:21

问题出在循环的条件和打印数组元素的方式上。

首先,循环的条件应该是score <= 9而不是score <= 9 。因为score是一个指向数组首元素的指针,我们要比较的是数组首元素的值,而不是指针本身的值。

其次,在打印数组元素时,应该使用score而不是score 。因为score是一个指针,打印它的值只会输出内存地址,而不是数组元素的具体数值。我们需要通过下标访问数组元素,即score 。

以下是修正后的代码:

#include <stdio.h>
#include <stdlib.h>

void test01()
{
    int score = { 1,2,3,4,5,6,7,8,9 };
    printf("sizeof = %d\n", sizeof(score));
    for (; score <= 9; score++)
    {
      printf("%d\n", score);
      break;
    }
}

int main()
{
    test01();
    system("pause");
    return 0;
}


这样修改后,程序将会打印出数组score的内存空间大小,并且打印出数组中第一个元素的具体数值。
页: [1]
查看完整版本: 一维数组打印出内存空间,还有打印出每一个元素的具体数值,结果出现错误,没有数值