一维数组打印出内存空间,还有打印出每一个元素的具体数值,结果出现错误,没有数值
#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;
} 根据你提供的代码,我发现了一些错误和问题:
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"); 来停留在结果界面。
希望这能帮助到你。如果还有其他问题,请随时提问。
如果问题已经解决,请设置最佳答案 问题出在循环的条件和打印数组元素的方式上。
首先,循环的条件应该是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]