C语言中char * a=(char *)_a什么意思?

c语言函数如下:

int tring(const void* _a,const void* _b)
{
char* a=(char*)_a;
char* b=(char*)_b;
return strcmp(a,b);
}

在这个函数中a与_a之间区别是什么?请大侠明示。
小弟在此谢谢了!!!

这里是要注意一个参数的问题,参数分为:形参与实参
形参就是形式参数,也就是函数定义中的参数
实参就是实际参数,也就是函数调用中的参数

int a(int a, char * b){}
上面的函数定义中,函数定义括号中的参数a与b就是形式参数,也就是形参
而当你在调用这个函数时,这个参数就是实际参数如:
int d = 32;
char * s = "Hello Josin";
//注意下面的函数调用:
a(d, s);
此时函数a的参数中d与s就是实际参数。也就是实际传递给函数的参数。追问

那char* a=(char*)_a
是什么意思呢?

追答

这里的_a表示的是传递进来的实际参数,使用了强制转换符()将类型转换为char *类型,因为变量a的类型为char *。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-09-05
定义一个保存char型变量地址的指针q,并把变量a的地址保存到q指针中
此时q中保存的是&a(即a在内存中地址)
如果在程序中出现(并不是最开始的定义指针时)的*q则表示q指针中保存的地址所指向的变量,
在你定义的这个中*q就等于a
第2个回答  推荐于2016-10-27

char *a = (char *)_a;  // 表示将变量_a进行强制类型转换为char *类型


比如:

char _a; 
char *a = (char *)_a;  // 就是将char类型的变量_a转换为char *类型,并赋值给*a

第3个回答  推荐于2018-03-01
_a是形参,因为前面有const修饰所以在子函数中,_a是不能被修改的,
所以要处理_a中的数据就要将_a的值赋给子函数里的变量,使用这个变量来对_a中的数据进行运算,其他指针之类不用再讲了吧,这里面有个指针做形参和普通变量做形参的区别,你要了解这个区别,这个就很容易懂了。追问

_a是形参,那么这里的a就单单是个变量?

追答

准确说是指针。。。
算了,说具体点吧,const void* 定义的是空类型指针,并且是只能初始化一次后面不能变,你可以查下const这个词的c语法,因为在传入_a的时候之前应该是初始化过,所以形参传进来,在子函数里无法直接更改,如果只是普通变量没有const 或者不是指针也没什么,直接用也可以,但是指针的操作影响实参,所以,如果直接使用_a编译是过不了的。
解释下char* a=(char*)_a;这句话的意思就是,将_a变量强制转换为(void 指针)char类型指针,然后将指针首地址传给a

第4个回答  2019-01-20
从这个式子可以判断a
也为指向字符型的指针,所以式子的意思是
定义一个指向字符型的指针q,并把它初始化为a,即此时q,a指向相同的字符变量
相似回答