C语言的问题,请教大神
# include <stdio.h># include <malloc.h>
int main(void)
{
int i=1;
int j;
int *p;
p=(int*)malloc(i*sizeof(int));
printf("输入&p的值");
scanf("%d",&p);
j=*p;
printf("*p的值%d\n",j);
}
这段代码中如果直接输出为
printf("%d",p);的话就可以输出p的值,
*p不是对变量p所指向的内存操作吗?为什么会出错 本帖最后由 jackz007 于 2019-9-15 00:42 编辑
这一句有错误:
scanf("%d",&p);
因为 p 已经是指针了,所以,不应该再用取址操作符了。
应该改成这样:
scanf("%d", p);
给你一个不会出错的例子:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int i = 1 , j , k , * p ;
printf("\n") ;
printf("\t\t你准备输入几个整数:") ;
scanf("%d" , & i) ;
p = (int *) malloc(i * sizeof(int)) ;
printf("\n") ;
printf("\t\t下面分别键入这 %d 个整数. . .\n" , i) ;
for(k = 0 ; k < i ; k ++) {
printf("\t\t") ;
scanf("%d" , & p) ;
}
printf("\n") ;
printf("\t\t以下是这 %d 个整数\n" , i) ;
for(k = 0 ; k < i ; k ++) printf("\t\t%d\n" , p) ;
free(p) ;
}
如果只需要输入 1 个数据:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int * p ;
p = (int *) malloc(sizeof(int)) ;
printf("\n") ;
printf("\t\t输入 & p 的值:") ;
scanf("%d" , p) ;
printf("\n") ;
printf("\t\t* p 的值 = %d\n" , * p) ;
free(p) ;
}
页:
[1]