• 关于

    c语言空形参

    的搜索结果

回答

int *p = NULL; 声明后的到一个值为0的指针变量, 调用change(p)时,函数里的a是p的拷贝,值也为0, a = malloc(sizeof(int));之后,a的值变成一个申请的地址,而p的值还是0, 函数返回时,指针变量a直接被释放,而p的值还是0, 也就是说你的p从开始到结束一直就是个空指针,你可以用printf("%p\n", p);放在各处打印看看p的值。 ######解释的相当到位。######第一个形参不能改变实参的值 第二个在堆上分配内存 两个函数完全不同######果然很有内憨呐######有什么内涵?哈。基础概念没搞清楚而已。你先搞清楚,一个函数调用时,参数究竟是在干什么。哈。######在函数change内部用malloc分配堆内存,调用函数change后如果忘记使用free释放,很容易发生内存泄露。参数可以传一个指针,指针指向的数据会随着函数change的操作而改变: /*  * main.c  * gcc main.c -o main  * ./main  */ #include <stdio.h> #include <stdlib.h> void change(int *a) {     a[0] = 168; } int main(int argc, char *argv[]) {     int *p = malloc(sizeof(int));     change(p);     printf("%d\n", p[0]);     free(p);     return 0; } ######没啥内涵。。###### 这个其实就是值传递还是地址传递的区别,如果改成void  change(int *&a) ;你会发下就可以了 ###### 引用来自“煦风之伤”的评论 这个其实就是值传递还是地址传递的区别,如果改成void  change(int *&a) ;你会发下就可以了 大神啊,啥时候C语言可以这样写了######不懂C,但是C++可以这样写######实参到形参是值拷贝,你看一下汇编代码就知道了######传参数的时候应该是change(&p),试试看。######你自己试了么?我试了不行...

爱吃鱼的程序员 2020-06-03 16:41:38 0 浏览量 回答数 0

问题

迷你书下载 精彩片段: 恶名昭著的指针究竟是什么:报错

kun坤 2020-06-09 15:10:04 4 浏览量 回答数 1
阿里云大学 云服务器ECS com域名 网站域名whois查询 开发者平台 小程序定制 小程序开发 国内短信套餐包 开发者技术与产品 云数据库 图像识别 开发者问答 阿里云建站 阿里云备案 云市场 万网 阿里云帮助文档 免费套餐 开发者工具 企业信息查询 小程序开发制作 视频内容分析 企业网站制作 视频集锦 代理记账服务 企业建站模板