手机浏览器扫描二维码访问
stringresult=touppercase(str);
将会报错,而
char[]str=“helloworld“;
stringresult=touppercase(str);
却能够得到正确的结果,至于为什么会这样,结合字符串是常量的概念,以你们现在的水品来说,应该是能够明白这其中的道理的。」
老爹笑了笑。
「第一种情况str是一个指针,它直接指向了一个常量,而touppercase()却试图修改一个常量的值,所以在运行的时候报错了。
但是第二种情况str是一个数组,没有任何限制,在函数中temp获取了这个数组的指针地址,然后对其修改,自然不会出任何问题。」
小弦子不愧是小弦子,我都还没有来得及尝试运行代码,他居然凭空推算出来了结果,不佩服真的不行。
「嗯,不错,的确是这样。这就是指针作为返回值的用法,应该没有什么难度吧?」
若是按照老爹例程代码来看,好像确实没有什么难度。
「不过返回一个指针,一定要确保这个指针是可用的,如果你返回的指针地址是函数中的一个局部变量,就可能引发不可预知的错误。
因为局部变量在函数执行结束后就被回收了,这时如果通过指针来访问一个被释放的了内存,会引发的后果是真的无法预料。」
我和小弦子都深以为然地点了点头,毕竟类似的问题老爹已经强调过好多遍了。
「好了,那我们就来讲讲最后一种情况,一个指针指向一个函数。先说如何定义一个函数指针:
返回值类型(*fp_name)(参数类型1,参数类型2……)
例如:
int(*fp)(int,int)
就声明了一个函数指针变量,它可以指向返回值为int类型,参数列表为两个int类型的所有函数。
intmax(inta,intb)
{
retua>ba:b;
}
intmin(inta,intb)
{
retua>bb:a;
}
比如说这里的max和min都符合条件,所以我们就可以这样:
原书名重生红三代四九城内,被称为太子党中最窝囊的私生子,聂振邦不堪重负终于自杀了,却重生回到了和父亲相认之前的那一刹那。悲剧是否还会重演?赫赫有名的红三代还能在四九城成为无人不知无人不晓的存在么?家道中落,这一世,聂振邦还会让历史重演吗?私生子也有掌控家族的那一天么?...
2018年起点第一部足球精品足球冠军系统附体,卢文斌化身冠军收割者。从德乙到德甲,从联盟杯到欧冠,卢文斌就是冠军的保证。他在俱乐部的终极目标,是在英超...
绝世仙帝重回都市,身怀无上医经绝世仙典。财富?地位?美人?这些不过是袖手可得的浮云罢了。这一世,唐昊志在仙道,步步登天,弹指碎青云!...
西方黑暗世界十二君王之一,暴君大人,一手创立的君王殿,傲立于西方黑暗世界,谁人听到暴君二字不闻风丧胆,却甘愿为了一个女人,放弃唾手可得的天下...
林清霞我们很早就认识啦,高中的学校有在一条街上!邓丽君梓钧是我见过最有音乐天赋的人。古龙小王酒量不错。琼瑶我很喜欢他小说中的爱情。倪匡我以为自己一小时写4500字已经很快了,直到认识了王梓钧赵雅芝很感谢他把我带进演艺圈。看了好多写香港的写好莱坞的写韩国的重生小说,我来试试写一下台湾吧。...
关于异能高手砰!车子撞在周宇的后背上,巨大的力量一下子就将他和那个美女撞飞了出去。轰!!一道四五米粗的闪电击中了尚在空中的两人。白光一闪,两人竟是消失在了那处空间!...