第09天C语言(05):指针变量复用

#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;
}

转载于:https://my.oschina.net/u/3561184/blog/1162386

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值