鱼C论坛

 找回密码
 立即注册
查看: 1207|回复: 2

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

[复制链接]
发表于 2023-8-27 14:21:46 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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


}

void main()
{

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

}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-8-27 14:22:03 | 显示全部楼层
根据你提供的代码,我发现了一些错误和问题:

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

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

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

下面是修改后的代码:
#include <stdio.h>
#include <stdlib.h>
#define _CRT_SECURE_NO_WARNINGS

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

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

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

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

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

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

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

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

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

希望这能帮助到你。如果还有其他问题,请随时提问。
如果问题已经解决,请设置最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-27 14:24:21 | 显示全部楼层
问题出在循环的条件和打印数组元素的方式上。

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

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

以下是修正后的代码:
#include <stdio.h>
#include <stdlib.h>

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

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

这样修改后,程序将会打印出数组  score  的内存空间大小,并且打印出数组中第一个元素的具体数值。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-24 03:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表