2
這是彙總:無法將:: C *轉換爲C *的指針結構
struct a
{
struct b{
} x;
struct c{
} y;
};
main(){
struct a z;
fun(&z.y)
}
fun(struct c *p){
}
得到錯誤的類型轉換,從一個:: C *到C *,同時傳遞參數的功能。
我的問題是初學者是否可以參與計算器,因爲我的問題似乎更容易得到負面分數。
原來的程序是:
#include<stdio.h>
#include<conio.h>
void fun(struct c *p);
struct a
{
struct b
{
int i;
float f;
char ch;
} x;
struct c
{
int j;
float g;
char ch;
} y;
};
void main()
{
int *p;
struct a z;
clrscr();
fun(&z.y);
printf("\n%d %f %c",z.x.i,z.x.f,z.x.ch) ;
getch();
}
void fun(struct c *p)
{
int offset;
struct b *address;
offset= (char *) &((struct c *)(& ((struct a*)0)->y)->j)-(char *)((struct a*)0);
address =(struct b *)((char *)& (p->j)-offset);
address->i=400;
address->f=3,14;
address->char='s';
}
還有一個問題是如何0
是在((struct a *)0)
類型強制轉換。
這是一個範圍問題。定義你的函數參數爲:: c * – cup