#pragma mark 指针变量复用 ###pragma mark 概念
###pragma mark 代码
#include <stdio.h>
void change();
void change2(char *p);
void change3(int values[]);
void change4(int *p);
char *demo();
char *demo2();
int main()
{
#warning
/*
只要是数据类型就具有3个特点
1. 可以用来定义变量
2. 可以用来作为形参和实参
3. 作为返回值
*/
/*
int num = 10;
change(num);
printf("num = %i\n",num);
// char *name = "lyh"; // 指针指向一个字符串 那么这个字符串是一个常量 不可以修改
// change2(name);
int nums[] = {1,3,5};
// change3(nums); // 数组名就是数组的地址
change4(nums); // 数组名就是数组第0个元素的地址
printf("nums[0] = %i\n",nums[0]);
*/
#warning 指针作为返回值
char *name = demo();
printf("name = %s\n",name);
char *name2 = demo2();
printf("name2 = %s\n",name2);
return 0;
}
char *demo2()
{
char name[] = "lyh"; // 存储在栈区 函数调用完会释放
return name;
}
char *demo()
{
char *name = "lyh"; // 存储在常量区 所以能打印出来
return name;
}
// 专业
void change4(int *p)
// int *p \
== nums; \
== int*p == &nums; \
== int *p == &nums[0]
// int *p; p = nums; p == nums;
{
p[0] = 998;
}
// 不专业
void change3(int values[])
{
values[0] = 998;
}
/*
void change2(char *p)
{
*p = "lys"; // 直接挂了
}
*/
void change(int value)
{
value = 55;
}