1、指针函数
● C 语言允许函数的返回值是一个指针,我们将这样的函数称为指针函数;
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
using namespace std;
char *strlong(char *p1,char *p2) {
return strlen(p1) > strlen(p2) ? p1 : p2;
}
int main() {
char str1[] = "www.csdn.net", str2[] = "http://www.csdn.net";
if (strlong(str1, str2) == str1) {
printf("最长的字符串是:str1\n内容是:");
for (int i = 0; i < strlen(str1); i++) {
printf("%c",*(str1+i));
}
printf("\n");
}
else if (strlong(str1, str2) == str2) {
printf("最长的字符串是:str2\n内容是:");
for (int i = 0; i < strlen(str2); i++) {
printf("%c", *(str2+i));
}
printf("\n");
}
return 0;
}
● 函数运行结束后,会销毁在它内部定义的所有局部数据,函数返回的指针尽量不要指向这些有可能被销毁的数据;
为什么说是有可能销毁呢?
因为,这里所说的销毁并不是将局部数据占用的内存全部抹掉,而是程序放弃对它的使用权,弃之不理,后面的代码可以随意使用这块内存,后面的代码可能会将这块被弃之不理的内存覆盖,如果保存数据及时,在后面的代码覆盖之前就将返回的指针指向的数据另外保存起来是没问题的;