char *pc[5], s[10]; A. pc = s B. *pc = s[0] C. *pc = s D. *pc = &s
时间: 2024-06-01 12:08:21 浏览: 107
首先需要说明的是,`char *pc[5]` 声明了一个包含 5 个指向 `char` 类型的指针的数组。
A. `pc = s` 是错误的,因为 `pc` 是一个数组名,不能作为左值出现。
B. `*pc = s[0]` 是正确的,它把 `s` 数组的第一个元素赋值给 `pc` 数组的第一个指针所指向的位置。这里要注意,`*pc` 只是 `pc[0]` 的简写,它是一个指向 `char` 类型的指针,可以用来存储一个字符。
C. `*pc = s` 是错误的,因为 `s` 是一个数组名,不能隐式转换为指针类型。
D. `*pc = &s` 是错误的,因为 `&s` 是一个指向数组的指针,类型为 `char (*)[10]`,与 `*pc` 的类型不匹配。
综上所述,选项 B 正确。
相关问题
void (*fout)(const char *fmt_msg, ...); /* output functions */
void (*fout)(const char *fmt_msg, ...); 是一个函数指针,指向一个接受一个const char *类型的参数和可变参数的函数。这个函数指针可以用来调用不同的输出函数,这些函数可以接受不同的参数并进行输出操作。\[2\]
函数指针的声明可以使用typedef来使其更易读和理解。例如,可以使用typedef来声明一个名为MyFuncPtrType的函数指针类型,它接受一个int类型的参数和一个char *类型的参数,并返回一个float类型的值。然后可以使用MyFuncPtrType来声明一个函数指针变量my_func_ptr,它可以指向满足这个函数指针类型的函数。\[2\]
在C++中,成员函数指针的语法可能看起来有些奇怪。例如,对于一个类SomeClass的成员函数指针my_memfunc_ptr,可以使用.*或->*运算符来调用指针指向的函数。例如,可以使用(x->*my_memfunc_ptr)(6, "Another Arbitrary Parameter")来调用一个SomeClass对象x的成员函数。\[3\]
总结起来,void (*fout)(const char *fmt_msg, ...)是一个函数指针,可以用来调用接受一个const char *类型的参数和可变参数的函数。在C++中,成员函数指针的语法可能看起来有些奇怪,但可以使用.*或->*运算符来调用指针指向的函数。\[2\]\[3\]
#### 引用[.reference_title]
- *1* *2* *3* [成员函数指针以及C++委托](https://blog.csdn.net/u014161300/article/details/23671103)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
在C语言中(以32位PC为例),以下5种数据类型的存储空间长度的排列顺序为( )。 A.char< int < long int <= float < double B.char= int < long int <= float < double C.char < int =long int = float<double D.char= int= long int <= float < double
答案是B。char和int都是4个字节,long int是8个字节,float是4个字节,double是8个字节。因此,char和int的存储空间长度相同,而long int和double的存储空间长度相同,但是long int比float长。
阅读全文