方便数据带回,如果是直接int的话在函数内部对数据进行修改以后原数据(即调用点处的数据)是没有变化的,函数能提供给调用点的只有一个返回值,而有的时候只有一个返回值是不够的,所以就需要用指针,在函数内部对数据本身直接修改,才函数结束之后直接这个数据就已经是改过的了,比如strcpy,gets之类的,参数都是指针,gets为例,我们把我们想用来存储用户输入的空间放进去,函数才能对这段空间直接操作,函数结束以后这部分数据就已经在内存里了,但是如果不用指针的话,您打算怎么只用一个返回值就搞定整个输入呢?以上内容希望对您可以有所帮助。
要分情况来看对于你说的
void ss(char* a);
传递指针是因为实际要传递的参数可能是一个字符串, 而不使用指针则只会传递字符串的第一个(或是指定位置的一个)字符,
对于
void ss(int *arg);// 或其他如 float, double, 或是结构休/类等
这种情况, 往往是希望函数的执行可以影响所传递参数的值, 所以将参数所在的地址传递过去, 在函数中就会直接修改这个地址的值, 也就是在调用函数中的变量的值. 或者也是希望传递一个整型数组
提高效率....使用INT,系统先把你提供的实参复制一份,然后再把这个副本的值赋给形参。
使用指针可以直接操作实参内存,可以直接修改它的值,省去了实参复制的时间成本。。。