相关疑难解决方法(0)

Typedef函数指针?

我正在学习如何动态加载DLL,但我不明白的是这一行

typedef void (*FunctionFunc)();
Run Code Online (Sandbox Code Playgroud)

我有几个问题.如果有人能够回答他们,我将不胜感激.

  1. 为什么typedef用?
  2. 语法看起来很奇怪; 之后void应该有不是一个函数名还是什么?它看起来像一个匿名函数.
  3. 是否创建了一个函数指针来存储函数的内存地址?

所以我此刻很困惑; 你能为我澄清一下吗?

c c++ pointers typedef

428
推荐指数
5
解决办法
38万
查看次数

为什么函数指针定义适用于任意数量的&符号'&'或星号'*'?

为什么以下工作?

void foo() {
    cout << "Foo to you too!\n";
};

int main() {
    void (*p1_foo)() = foo;
    void (*p2_foo)() = *foo;
    void (*p3_foo)() = &foo;
    void (*p4_foo)() = *&foo;
    void (*p5_foo)() = &*foo;
    void (*p6_foo)() = **foo;
    void (*p7_foo)() = **********************foo;

    (*p1_foo)();
    (*p2_foo)();
    (*p3_foo)();
    (*p4_foo)();
    (*p5_foo)();
    (*p6_foo)();
    (*p7_foo)();
}
Run Code Online (Sandbox Code Playgroud)

c c++ function-pointers

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

数组名称是指针吗?

数组的名称是C中的指针吗?如果没有,数组的名称和指针变量之间有什么区别?

c arrays pointers

191
推荐指数
4
解决办法
6万
查看次数

sizeof(&array)返回什么?

问题是:为什么数组的地址等于它在C中的值?

#include <stdio.h>
#define N 10    
char str2[N]={"Hello"};
int main(){
    printf("sizeof(str2): %d bytes\n", sizeof(str2));
    printf("sizeof(&str2): %d bytes\n", sizeof(&str2));
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出:

sizeof(str2): 10 bytes
sizeof(&str2): 4 bytes
Run Code Online (Sandbox Code Playgroud)

我知道str2单独是数组中第一个元素的地址str2.并且当str2它的参数何时sizeof返回整个数组str2的大小.

另外,&str2也是arr中第一个元素的地址,str2但是来自不同的类型(char (*)[N]==指向数组的指针).但是&str2当它是一个论证时,它是如何表现的sizeof

c string pointers sizeof

30
推荐指数
3
解决办法
2万
查看次数

C中的类型 - int*和int*[100]有什么区别?

有点像菜鸟所以不要在这里杀了我.

以下代码之间有什么区别?

int *p;         //As i understand, it creates a pointer to an variable of size int.
int *p[100];    //Don't really know what this is.
int (*p)[100];  // I have come to understand that this is a pointer to an array. 
Run Code Online (Sandbox Code Playgroud)

c pointers

12
推荐指数
3
解决办法
4125
查看次数

C++ 取消引用数组

我从未读过任何有关取消引用数组(如指针)的内容,我相信它不应该起作用。但以下代码确实可以使用 QT Creator 和 g++ 4.8:

int ar[9]{1,2,3,4,5,6,7,8,9};
cout << *ar << endl; //prints the first element of ar
Run Code Online (Sandbox Code Playgroud)

这是正确的行为还是只是编译器修复了代码?

c++ arrays dereference

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

打印变量(或指针)的内存位置

我想打印存储变量的位置.我谷歌它,我发现了这个:

int *p;
printf("memory location of ptr: %p\n",  (void *)p);
Run Code Online (Sandbox Code Playgroud)

如果我写这个,是不是?

printf("memory location of ptr: %p\n",  &p);
Run Code Online (Sandbox Code Playgroud)

我编译它,我没有得到任何错误或警告,但如果我把它们都放在程序中,这两个语句不会返回相同的值.

c variables pointers memory-address

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

从用户输入c ++ char到int

我正在阅读2个坐标的用户输入,如下所示:

输入坐标:10 5

我希望能够在10中读取行,将5作为列.

这就是我所拥有的.

  char coord[5];

  ...

  cout << "Enter a coord: ";
  cin.getline(coord,sizeof(coord));
  row = atoi(coord[0]);
Run Code Online (Sandbox Code Playgroud)

所以代码在atoi()上给我一个错误,如果用户输入一个像10个字符的数字无法真正从索引读取它,你们会怎么做呢?谢谢.

c++ string int

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