c语言函数如下:
int tring(const void* _a,const void* _b)
{
char* a=(char*)_a;
char* b=(char*)_b;
return strcmp(a,b);
}
在这个函数中a与_a之间区别是什么?请大侠明示。
小弟在此谢谢了!!!
那char* a=(char*)_a
是什么意思呢?
这里的_a表示的是传递进来的实际参数,使用了强制转换符()将类型转换为char *类型,因为变量a的类型为char *。
char *a = (char *)_a; // 表示将变量_a进行强制类型转换为char *类型
比如:
char _a;_a是形参,那么这里的a就单单是个变量?
追答准确说是指针。。。
算了,说具体点吧,const void* 定义的是空类型指针,并且是只能初始化一次后面不能变,你可以查下const这个词的c语法,因为在传入_a的时候之前应该是初始化过,所以形参传进来,在子函数里无法直接更改,如果只是普通变量没有const 或者不是指针也没什么,直接用也可以,但是指针的操作影响实参,所以,如果直接使用_a编译是过不了的。
解释下char* a=(char*)_a;这句话的意思就是,将_a变量强制转换为(void 指针)char类型指针,然后将指针首地址传给a