扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
函数名本身是一个地址,其实 C 语言的指针就代表一个地址的,虽然指针本身也有地址
目前创新互联已为数千家的企业提供了网站建设、域名、虚拟主机、绵阳服务器托管、企业网站设计、阳曲网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
#include stdio.h
void f()
{
}
void main()
{
printf("%u\n", f);
printf("%u\n", f);
printf("%p\n", f);
}
主函数中前两行%u表示输出无符号的十进制,而第三行%p表示输出地址,其结果是一个十六进制的数,你将其转换成十进制,你会发现与前两行结果一样。
常数没有地址!!!它和变量不一样。
但是你既然是通过DMA获得的一个常数,那么肯定不是通过123这样的方式调用的,而是保存在某个变量中的,那个变量可以用取址
就是找到这个变量的内存地址,直接读写
例如:scanf("%d",a);
就是找到a的地址,把读入一个数写到a
的地址中
在例如
p=a;
就是让指针p指向a的内存地址,这样直接对内存读写.有利于提高操作速度.
#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语言中函数传参有两种,传值调用 和传指针调用.
传值调用时, 被调函数中改变参数值不会影响主函数.
只有传指针调用, 才可以将参数值回传给主函数.
scanf中要根据输入对参数赋值, 所以 必须传指针调用.
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流