函数

2017-12-27  本文已影响0人  jtsky

内置函数

image.png
image.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.函数原型中的参数名称可以省略,只写参数类型。

函数的形参与实参

按值传递

注意:函数的的实参是按值传递的,即实参会拷贝一份储存在方法栈上给形参进行操作。

引用传递

注意:引用传递的本质其实也是按值传递,只不过我们传递过去的对象的地址(指针中的值就是对象地址),所以在方法中修改了指定地址中说保存的内容的时候,会影响外部变量。

上一篇下一篇

猜你喜欢

热点阅读