使用指针从地址读取值 - C 编程
Read value from adress with pointers - C programming
在我的程序中,我想输入一些数字,直到输入0。当我输入0时,程序必须停止并按顺序显示数字。快完成了,但我有一个问题。我不能使用 array
,这是禁止的。
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int main()
{
int number;
int *ptr;
int i = 0, j = 0;
ptr = &number;
number = (int*)malloc(2000);
do{
printf("Enter a number : ");
scanf("%d",ptr);
printf("\n######\n");
printf("%d. number = %d \t%p\n",i+1,*(ptr),(ptr+i));
printf("\n######\n");
i++;
} while(((number)) != 0);
printf("\n!!!!############!!!!\n");
for(j = 0 ; j < i; j++){
number=number+j;
printf("%d. number = %d \t%p\n",j+1,(number),&(number));
}
return 0;
}
你的代码有很多问题。我认为你尝试了一些对你现在的理解水平来说太具有挑战性的事情。
您应该从头开始学习指针,并确保您了解 *
和 &
运算符。试着写一些简单的小程序,这样你就能很好地掌握它们。
从那里您可以继续学习 scanf
和 malloc
,因为它们非常依赖指针。
这是您的代码的工作版本:
int main()
{
int* number; // this is should be a pointer
//int *ptr;
int i = 0, j = 0;
//ptr = &number;
number = (int*)malloc(2000);
do{
printf("Enter a number : ");
// scan an integer into the ith place in memory
// after the address pointed to by "number"
scanf("%d",number+i); //number+i is already an address, don't use &
printf("\n######\n");
printf("%d. number = %d \t%p\n",i+1,*(number+i),number+i);
printf("\n######\n");
i++;
// need to use a -1 since we incremented i
}while(*(number+i-1) != 0);
printf("\n!!!!############!!!!\n");
for(j = 0 ; j < i; j++){
//=number+j;
printf("%d. number = %d \t%p\n",j+1,*(number+j),number+j);
}
return 0;
}
在我的程序中,我想输入一些数字,直到输入0。当我输入0时,程序必须停止并按顺序显示数字。快完成了,但我有一个问题。我不能使用 array
,这是禁止的。
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int main()
{
int number;
int *ptr;
int i = 0, j = 0;
ptr = &number;
number = (int*)malloc(2000);
do{
printf("Enter a number : ");
scanf("%d",ptr);
printf("\n######\n");
printf("%d. number = %d \t%p\n",i+1,*(ptr),(ptr+i));
printf("\n######\n");
i++;
} while(((number)) != 0);
printf("\n!!!!############!!!!\n");
for(j = 0 ; j < i; j++){
number=number+j;
printf("%d. number = %d \t%p\n",j+1,(number),&(number));
}
return 0;
}
你的代码有很多问题。我认为你尝试了一些对你现在的理解水平来说太具有挑战性的事情。
您应该从头开始学习指针,并确保您了解 *
和 &
运算符。试着写一些简单的小程序,这样你就能很好地掌握它们。
从那里您可以继续学习 scanf
和 malloc
,因为它们非常依赖指针。
这是您的代码的工作版本:
int main()
{
int* number; // this is should be a pointer
//int *ptr;
int i = 0, j = 0;
//ptr = &number;
number = (int*)malloc(2000);
do{
printf("Enter a number : ");
// scan an integer into the ith place in memory
// after the address pointed to by "number"
scanf("%d",number+i); //number+i is already an address, don't use &
printf("\n######\n");
printf("%d. number = %d \t%p\n",i+1,*(number+i),number+i);
printf("\n######\n");
i++;
// need to use a -1 since we incremented i
}while(*(number+i-1) != 0);
printf("\n!!!!############!!!!\n");
for(j = 0 ; j < i; j++){
//=number+j;
printf("%d. number = %d \t%p\n",j+1,*(number+j),number+j);
}
return 0;
}