a::*p(int)
时间: 2023-08-18 20:02:05 浏览: 91
a::*p(int) 是一个函数指针,它表示指向一个返回指针的成员函数的指针。"a::"表示这个成员函数是定义在类a中的,"*"表示这是一个指针类型,"p"是指针的名称,"(int)"表示这个函数接受一个int类型的参数。
具体来说,a::*p(int) 可以被理解为指向类a中返回指针的成员函数的指针。这样的函数指针可以用来访问和调用类a中的成员函数,这些成员函数接受一个int类型的参数,并返回一个指针类型的值。
通过使用这样的函数指针,我们可以在运行时动态地选择和调用类a中的不同成员函数,而不需要提前知道具体的函数实现。这种灵活性使得函数指针在设计回调函数、事件处理和插件化等场景中非常有用。
需要注意的是,使用函数指针要确保成员函数和函数指针的类型能够匹配,即成员函数的参数和返回值类型要与函数指针所指向的函数类型一致。否则,在使用函数指针时可能会导致编译错误或运行时错误。
相关问题
这是一道c++选择题,若有定义:int a[]={1,2,3,4,5,6,7,8,9,10},*p=a;则数值为7的表达式为是( ). A:*(p+7) B:p[*(a+6)] C:p+6 D:a[*(p+5)]
正确答案是 D:a[*(p 5)]。
解析:
首先,指针 p 指向数组 a 的第一个元素,即 a[0]。因此,p+5 指向 a[5]。而 *(p+5) 就是 a[5] 的值,也就是 6。
其次,*(p+5) 和 *(a+5) 等价,因为 p 和 a 都指向同一个数组。因此,*(a+5) 也等于 6。
再次,p+5 和 a+5 是不同的指针。p+5 是指向 a[5] 的指针,而 a+5 是指向 a[5] 后面的下一个元素 a[6] 的指针。
最后,p+5 和 a+5 的类型都是 int*,因此 *(p+5) 和 *(a+5) 都是 int 类型的值,不能作为数组下标使用。但是,*(p+5) 和 *(a+5) 可以作为指针下标使用,例如 a[*(p+5)] 或者 p[*(a+5)]。
因此,正确的答案是 D:a[*(p+5)],等价于 a[5]。
C语言有以下字符串:****A*BC*DEF****,删除字符串中间的星号,得到如下结果:****ABCDEF****
可以使用指针和循环来实现字符串的删除操作,具体步骤如下:
1. 定义一个指针p,初始指向字符串的第一个字符;
2. 定义一个变量count,用来记录删除的星号数量,初始值为0;
3. 从左到右遍历字符串,遇到星号就将count加1,否则将当前字符移到p指向的位置,并将p后移一位;
4. 遍历完字符串后,将p指向的位置设置为字符串结束符'\0';
5. 最后将字符串的长度减去count即为删除星号后的长度。
代码示例:
```c
#include <stdio.h>
#include <string.h>
void remove_star(char* str) {
char* p = str;
int count = 0;
while (*str) {
if (*str == '*') {
count++;
} else {
*p++ = *str;
}
str++;
}
*p = '\0';
int len = strlen(str) - count;
str[len] = '\0';
}
int main() {
char str[] = "****A*BC*DEF****";
remove_star(str);
printf("%s\n", str); // 输出:****ABCDEF****
return 0;
}
```
注意:为了保证字符串的完整性,代码中并没有真正删除星号,而是将非星号字符移到了指针p指向的位置。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)