c语言取地址的函数调用 c语言函数调用地址传递

c语言取地址符有什么用,为什么scanf一定要用&

取地址 就是把变量转为指针, 起到传地址调用函数的效果.

创新互联专注于企业成都营销网站建设、网站重做改版、锦屏网站定制设计、自适应品牌网站建设、HTML5建站电子商务商城网站建设、集团公司官网建设、成都外贸网站建设、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为锦屏等各大城市提供网站开发制作服务。

而C语言中函数传参有两种,传值调用 和传指针调用.

传值调用时, 被调函数中改变参数值不会影响主函数.

只有传指针调用, 才可以将参数值回传给主函数.

scanf中要根据输入对参数赋值, 所以 必须传指针调用.

c语言函数参数列表中参数加取址符调用传地址反而会报错

c 语言函数 形参 列表 中 可以是普通变量 或指针变量,不允许 加取址符。

c++ 语言函数 形参 列表 中 加取址符 的参数 叫 “引用”,c 不支持。

------

函数 调用 的实参 类型 要与 形参对应,只有 形参 为 指针变量 的 实参 才可以是 地址。

void f(int x, int *y){};

int a,b;

int *p;

p=a;

调用

可以是 f(b,a);

可以是 f(b,p);

不可以是 f(b,a);

不可以是 f(b,a);

不可以是 f(b,a);

不可以是 f(b,p);

不可以是 f(b,p);

不可以是 f(b,p);

(但愿回答不被封。)

c语言调用本机ip地址时如何定义gethostname函数

//c++获取本机IP

#include stdio.h

#include stdlib.h

#include WINSOCK2.H

#pragma comment(lib,"ws2_32.lib")

int getIP(int ,char**)

{

char host_name[255];

if(gethostname(host_name,sizeof(host_name))==SOCKET_ERROR)

{

printf("Error %d when getting local host name\n",WSAGetLastError());

return -1;

}

printf("host name:%s\n",host_name);

struct hostent *phe=gethostbyname(host_name);

if(phe==0)

{

printf("Error host lookup\n");

return -1;

}

for(int i=0;phe-h_addr_list[i]!=0;++i)

{

struct in_addr addr;

memcpy(addr,phe-h_addr_list[i],sizeof(struct in_addr));

printf("Address %d :%s\n",i,inet_ntoa(addr));

}

return 0;

}

int main(int argc,char *argv[])

{

WSAData wsaData;

if(WSAStartup(MAKEWORD(1,1),wsaData)!=0)

{

system("pause");

return -1;

}

int result=getIP(argc,argv);

WSACleanup();

system("pause");

return result;

}

C语言函数调用及地址分配问题

#includeiostream.h

#includestring.h

void getmemory(const char ** p)

{

*p = new char[20];

}

int main()

{

char *str=NULL;

getmemory(str);

strcpy(str,"qew");

return 0;

}

说明为什么会让str获取到p开辟的空间。

那么void getmemory(const char ** p)这个函数形参是什么!形参实际上是p,p是调用函数的一份拷贝,p改变了调用的实参是不会改变的(你的程序的错误)。当我改变的是*p时,因为p是一份指针拷贝,p与实参指针str保存同一块地址,当改变*p时对应的实参指针str指向的内容也就改变了。

仿佛

int a = 5;

int b = a;

b = 3;

cout a;//a依然是5,因为b是a的一份拷贝,b变了,a不会变

int a = 5;

int *p = a;

*p = 3;

cout a;//a为3,因为p中存的是a的地址,当改变p指向的内容时,实际上就是改变a的内容

c语言scanf函数到底怎么取地址。

#include"stdio.h"

void main()

{

int a,b;

scanf("%5d",a); //从键盘上读取整数变量a的值,最多5位数

printf("a=%d\n",a); //输出a=XXXXX (可以是1~5位数)

scanf("%5d%3d",a,b); //从键盘上读取整数变量a的值最多5位数,b的值最多3位数

printf("a=%d\nb=%d\n",a,b); //输出两行,a=XXXXX b=XXX

}

C语言如何调用函数

C语言中,函数调用的一般形式为:

函数名(实际参数表)

对无参函数调用时则无实际参数表。实际参数表中的参数可以是常数、变量或其它构造类型数据及表达式。各实参之间用逗号分隔。

#includestdio.h

int fun(int x, int y); // 函数声明,如果函数写在被调用处之前,可以不用声明

void main()

{

int a=1, b=2, c;

c = fun(a, b); // 函数的调用,调用自定义函数fun,其中a,b为实际参数,传递给被调用函数的输入值

}

// 自定义函数fun

int fun(int x, int y)  // 函数首部

{  // {}中的语言为函数体

return xy ? x : y;  // 返回x和y中较大的一个数

}

扩展资料

C语言中不允许作嵌套的函数定义。因此各函数之间是平行的,不存在上一级函数和下一级函数的问题。但是C语言允许在一个函数的定义中出现对另一个函数的调用。

这样就出现了函数的嵌套调用。即在被调函数中又调用其它函数。这与其它语言的子程序嵌套的情形是类似的。其关系可表示如图。

图表示了两层嵌套的情形。其执行过程是:执行main函数中调用a函数的语句时,即转去执行a函数,在a函数中调用b 函数时,又转去执行b函数,b函数执行完毕返回a函数的断点继续执行,a函数执行完毕返回main函数的断点继续执行。

参考资料:函数调用_百度百科


网站标题:c语言取地址的函数调用 c语言函数调用地址传递
网页链接:http://azwzsj.com/article/dooside.html