qq_41870875
2021-05-08 18:59
采纳率: 100%
浏览 47

请教下c语言 指针赋值 的问题

初学者 今天被指针搞晕了, 求大神解答下疑问

 第一个疑问 :指针 指向和赋值  规范的正确操作方式是什么
目前我对指针的理解程度  指针大小8  但指向的内存区域可以操作
*p=a; 这是指针指向a的内存 
 p=&a; 这是把a的值赋给p 8 大小的内存上

第二个问题: 有个需求,需要把double的值赋给 *void 指针或者指向   之后打印要能正常显示

我的操作 如下   均不正常  ,这也是把我彻底搞晕了 

 

double d=97.01;
double *dd;
dd=&d;
//*dd =d; *dd=&d; 报错 

void *v1,*v2,*v3,*v4,*v5;

//void *v1=(double *)88.43;
//报错:error: cannot convert to a pointer type


//均报错的操作 v1=(double *)d; v1=(void *)d; v1=d; *v1=d; *v1=dd; *v1=*dd; v1=(void *)dd;


v2=&d;
v3=dd;
v4=ⅆ

// 有个奇怪现象 如果最先 打印printf("---double dd %lf %lf\n",d,*dd); 这条  下面的 第一种操作 可以正常打印 但注释这条后 下面的均输出0.000


printf("%lf , %lf , %lf \n",v2,v3,v4);
//输出 0.000000 , 0.000000 , 0.000000 

printf("%lf %lf \n",v2,(double *)(v2));
//输出 0.000000 0.000000 

//打印均报错的操作 *v2 和 (double *)(*v2) 和(double *)(v2) 和(double )(*v2)

printf("%lf %lf \n",v3,(double *)(v3));
//输出:0.000000 0.000000 

printf("%lf %lf \n",v4,(double *)(v4));
//输出0.000000 0.000000 

// v5 分配 void 和double 同样均 输出0.000000
v5=(double *) malloc (sizeof(double)*2);
v5 =&d;

printf("v5: %lf %lf\n",v5,(double *)v5);
//输出:v5: 0.000000 0.000000

//均报错的操作  *v5 和 (double *)(*v5) 和(double *)(v5) 和(double )(*v5)

 

 

 

4条回答 默认 最新

相关推荐 更多相似问题