小编Dav*_*ith的帖子

int*vs float*type

给出以下代码片段:

int *iptr;
float *fptr;
float fval;
fval = 0.0;
fptr = &fval;
iptr = fptr;
printf("%d \n", *iptr);
fval = 1.0;
printf("%d \n", *iptr);
Run Code Online (Sandbox Code Playgroud)

输出是:

0
1065353216

为什么第一个print语句至少大致匹配与*iptr(0.0)相关的值,但第二个print语句没有?

c floating-point pointers assign

4
推荐指数
1
解决办法
313
查看次数

以下分配仅导致警告.关于C如何对待类型等价,这说了什么?

以下分配仅导致警告.关于C如何对待类型等价,这说了什么?

int *iptr;
float *fptr;
float fval;
fval = 0.0;
fptr = &fval;
iptr = fptr;
Run Code Online (Sandbox Code Playgroud)

特别是,我指的是上面代码片段的最后一行中的赋值; 即,

iptr = fptr;
Run Code Online (Sandbox Code Playgroud)

c pointers type-equivalence assign

2
推荐指数
1
解决办法
64
查看次数

解释下面的代码?

关于下面的代码片段(用C编写),我有几件事我不明白:

struct T {
int a;
int *b;
struct T *next;
} ;

struct T *p1;

struct T* (*f)(int, int, struct T*);

struct T* g(int a, int b, struct T* c)
{
    return (a > b ? c : NULL);
}

f = &g;
p1 = (*f)(4,3,p1);
Run Code Online (Sandbox Code Playgroud)

特别是,这条线是什么意思?

struct T* (*f)(int, int, struct T*);
Run Code Online (Sandbox Code Playgroud)

这是一个功能吗?如果是这样,为什么它没有正文,为什么有正式的参数名称似乎缺失?如果缺少身体,这个功能会返回什么?

另外,下面的作业是怎么回事?

f = &g;
Run Code Online (Sandbox Code Playgroud)

c function assign

2
推荐指数
1
解决办法
79
查看次数