写这篇博文的动机是,在看Linux网络编程时,看到
//bind 函数定义
int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen);
//函数调用
bind(lfd, (struct sockaddr *)&serv_addr, sizeof(serv_addr));
觉得在函数参数中一会用 *,一会用&,有点莫名其妙,查阅资料后醍醐灌顶。
这里其实是C++函数参数传递的三种方式之 指针传递(地址传递)
- 当进行指针传递的时候,形参(函数定义的时候)是指针变量,实参(函数调用的时候)是一个变量的地址或者是指针变量。调用函数的时候,形参指向实参的地址。
- 指针传递中,函数体内可以通过形参指针改变实参地址空间的内容。
举个栗子:
//指针传递
void swap(int *a, int *b){
cout<<"形参指针a的地址 = "<< a <<endl;
cout<<"形参指针b的地址 = "<< b <<endl;
int tmp = *a;
*a = *b;
*b = tmp;
}
int main(){
int a = 5;
in