我是一名大学生,我们的老师告诉我们这些建议的意义,但我只想弄清楚其中的一些:
1. int *p1;
2. int *p2[10];
3. int (*p3)[10];
4. int (*p4)();
5. int **p5();
6. int (**p6)[10];
7. int (**p7)();
8. int *(*p8)();
9. int (*p9[10])();
10. int **p10[10];
这就是我到目前为止想出来的:
p1是指向int的指针。
p2是由10个int指针组成的数组。
p3是指向具有10个元素的静态数组的指针。
p4是一个函数指针
p5根
当我试图将扩展类型的指针传递给接受指向父类型类的指针的例程时,我会得到一个类型错配错误。但是,在第二种情况下,在虚拟参数不是指针的情况下,它编译得很好。
child_type是一个parent_type类,它们都有指针属性,所以所有东西似乎都匹配,当虚拟参数不是指针时,它就工作了。
那么,如果虚拟参数是一个指针,为什么会失败呢?
module wrong_type_test
implicit none
type parent_type
integer :: a
end type parent_type
type, extends(parent_type) :: c
我发现了在pdf中获取内容类型的方法。我在上构建了我的代码,在那里我试图从字典中读取内容类型。我发现类型的关键是类型。但是,我得到了一个错误:
致命错误:在展开可选值时意外找到零
这是我的代码:
pdfDoc = CGPDFDocumentCreateWithURL(url)
if (pdfDoc != nil) {
let pdfCatalog=CGPDFDocumentGetCatalog(pdfDoc)
var uriStringRef: UnsafeMutablePointer< CGPDFStringRef>!
if (CGPDFDic
我在试着破解一个fortran代码。它将一个指向函数的指针作为实际参数传递,而形式参数则是一个目标。它在主程序中定义并分配一个globalDATA类型的指针,然后调用一个传递该指针的函数:
module dataGLOBAL
type globalDATA
type (gl_1) , pointer :: gl1
type (gd_2) , pointer :: gd2
type (gdt_ok) , pointer :: gdtok
...
...
end type globalDATA
end module dataGLOBAL
我遇到了两个指针声明,我很难理解。我对优先规则的理解如下:
Operator Precedence Associativity
(), [ ] 1 Left to Right
*, identifier 2 Right to Left
Data type 3
但是,即使是这样,我似乎也不知道如何正确地评估以下示例:
第一个示例
float * (* (*ptr)(int))(double **,
我被这个程序困住了,因为有一个指针:p_return_index。正如它所暗示的,它被包含在每个搜索函数中,并且应该给出索引值,在这个索引值中可以找到一个搜索到的数字。如果搜索的数字不在数组中,则程序运行良好,但当我输入数组中的数字时,会出现分段错误(核心转储)错误。我在传递指针时一定是做错了什么。因为它被赋予了索引号。我只是不知道该怎么解决。注意,指针是用NULL初始化的;我认为这可能与它有关。显然,我不知道。
void show_data(int array[], int max_index, int searched_number);
/* Display the arrays cont
下面的代码来自一个必须用C和C++编译的现有应用程序。有一个宏:
/* Type-checking macro to provide arguments for CoCreateInstance() etc.
* The pointer arithmetic is a compile-time pointer type check that 'obj'
* really is a 'type **', but is intended to have no effect at runtime. */
#define COMPTR(type, obj) &
如果我创建了一个指向基成员的指针,我通常可以将它转换为指向派生成员的指针,但当在下面的Buzz这样的模板中使用时就不能了,因为第一个模板参数会影响第二个模板参数。我是在与编译器bug作斗争,还是标准真的要求这样做不起作用?
struct Foo
{
int x;
};
struct Bar : public Foo
{
};
template<class T, int T::* z>
struct Buzz
{
};
static int Bar::* const workaround = &Foo::x;
int main()
{
// This