扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
1.返回函数里面局部变量的地址,而函数结束后,该地址就释放掉了,所以在函数外访问、修改该地址都是非法的,结果不可知
成都创新互联-专业网站定制、快速模板网站建设、高性价比邕宁网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式邕宁网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖邕宁地区。费用合理售后完善,10多年实体公司更值得信赖。
2.指针为野指针,然后向野指针赋值(*ptr=10),非法访问,结果不可知,容易崩溃,切函数返回的也是野指针
3.函数内申请动态内存空间,函数结束,该内存空间不会释放,函数返回该内存空间地址,外部可以使用,但外部需要手动释放该空间(free(动态内存空间地址))
struct student *p, *q, *head;
这里head不就是 struct student 类型的指针么。
C语言指向函数的指针承载的信息比较复杂,组织起来要素要写全。根据指向函数的指针的书写语法,下面的代码就是一个返回函数指针的函数:int (*f(void))(int){//f是函数,没有参数,返回指向一个函数的指针;这个被指向的函数有一个int型形参,且返回一个int值 return fun;//fun是个函数名,必须具备一个int形参、返回int值的要求}以下代码可以验证上述函数的正确性:pre t="code" l="cpp"//#include "stdafx.h"//If the vc++6.0, with this line.
#include "stdio.h"
int fun(int n){
printf("abcdef\n");
return n;
}
int (*f(void))(int){
return fun;
}
int main(void){
printf("%d\n",f()(100));//调用函数f,通过f返回的指针用100调用函数fun
return 0;
}输出是:abcdef100
你询问的是“C语言中指针类型可以返回-1”的问题吗?是可以返回值为-1的地址的。
C语言允许函数的返回值是一个指针(地址),我们将这样的函数称为指针函数。所以其意义是指向地址为“-1”的变量值索引。
需要注意的是,用指针作为函数返回值时需要注意的一点是,函数运行结束后会销毁在它内部定义的所有局部数据,包括局部变量、局部数组和形式参数,函数返回的指针请尽量不要指向这些数据,C语言没有任何机制来保证这些数据会一直有效,它们在后续使用过程中可能会引发运行时错误。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流