函数
2017-12-27 本文已影响0人
jtsky
内置函数
image.pngimage.png
malloc|calloc(动态分配内存)
区别:malloc一般需要强制转换,calloc不需要。calloc会默认初始化数组的每个值为0
int *nums;
//为指针动态分配20字节的空间 等价与int nums[5]
nums = malloc(20);
//nums = malloc(sizeof(int) *5);
// nums= calloc(5, sizeof(int));
for (int i = 0; i < 5; i++) {
printf("请输入第%d个元素:", i + 1);
scanf("%d", nums + i);
}
printf("我们手动输入的数组为:\n");
for (int i = 0; i < 5; i++) {
printf("%d \t", *(nums + i));
}
//回收内存 指针必须为初始化的指针 换句话说就是得重置到首地址否则会回收失败
free(nums);
nums = NULL;
自定义函数
自定义函数的完整写法:
//定义函数原型
int sum(int, int);
int main() {
int c = sum(3, 4);
printf("%d",c);
return 0;
}
//函数定义
int sum(int a, int b) {
return a + b;
}
注意:
1.函数原型与函数定义的头部类似,最后以分号结尾。
2.函数原型中的参数名称可以省略,只写参数类型。
函数的形参与实参
按值传递
注意:函数的的实参是按值传递的,即实参会拷贝一份储存在方法栈上给形参进行操作。
引用传递
注意:引用传递的本质其实也是按值传递,只不过我们传递过去的对象的地址(指针中的值就是对象地址),所以在方法中修改了指定地址中说保存的内容的时候,会影响外部变量。