
正文
c语言函数参数a c语言函数参数省略号
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
c语言中,函数传参&a和*a有什么区别?
*a形参传递的是指针变量a
a这个是引用类型变量a,引用类型是C++中的,C语言没有引用类型
相关问答
Q1: c语言 请问函数里的参数,a b c d和a b,mc,md怎样对应的。
形式参数和实际参数之间是按位置对应c语言函数参数a的c语言函数参数a,与名称没有关系。
例如定义函数max(int b,int a)c语言函数参数a,调用函数c语言函数参数a的语句为max(a,b)时c语言函数参数a,函数里面的a、b与调用的两个是刚好相反的。
Q2: C语言函数参数
汇编代码gcc:
第一个问题的汇编:
movl $0, %ebx
incl %ebx
incl %ebx
incl %ebx
movl %ebx, 8(%esp)
movl %ebx, 4(%esp)
movl %ebx, (%esp)
call _func
汇编显示,先将n自增了3次变为3,然后调用函数,因此都是3
第二个问题的汇编:
movl $3, 16(%esp)
movl $98, 12(%esp)
movl $2, 8(%esp)
movl $97, 4(%esp)
movl $1, (%esp)
call _func2
可以看出参数对应的栈地址应该是连续的
另外,这个程序在VC6下的结果完全不一样:
func for n++
0 0 0
12ff2c 12ff30 12ff34
func for ++n
3 2 1
12ff2c 12ff30 12ff34
func2
12ff24 12ff28 12ff2c 12ff30 12ff34
但是最后的地址也是连续的。
此类问题知道上问过多次了,可以说没有什么意义,结果与编译器实现相关,实际编程没有用处,除非写代码的人喜欢玩花俏
Q3: 写一个C语言函数,该函数的参数为整数数组a以及a的大小n,函数的功能为对数组a进行冒泡排序后的结果?
#include stdio.h
#includestdlib.h
void sort(int a[],int n){
int temp;
for(int i = 0;in-1;i++){
for(int j = 0;jn-i-1;j++){
if(a[j]a[j+1]){
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
}
int main( )
{
int n;
printf("请输入数组c语言函数参数a的大小:\n");
scanf("%d",n);
int a[n];
printf("请输入数组c语言函数参数a的值:\n");
for (int i = 0; i n; ++i)
{
scanf("%d",a[i]);
}
sort(a,n);
printf("排序结果:\n");
for(int j = 0;jn;j++){
printf("%d ",a[j] );
}
return 0;
}
关于c语言函数参数a和c语言函数参数省略号的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。







