文档章节

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

lyh2017iOS
 lyh2017iOS
发布于 2017/07/05 09:57
字数 290
阅读 3
收藏 0

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

© 著作权归作者所有

共有 人打赏支持
lyh2017iOS
粉丝 1
博文 357
码字总数 137380
作品 0
朝阳
[iOS]C语言知识点系列视频整理

C语言知识点系列视频 目录 C语言技术视频-01-变量的定义 C语言技术视频-02-程序分支结构(if...else) C语言技术视频-03-程序分支结构(switch) C语言技术视频-04-程序循环结构(while{}) C语言技...

浩浩老师
2015/10/13
38
0
C语言基础-05-指针

指针是C语言中非常重要的数据类型,如果你说C语言中除了指针,其他你都学得很好,那你干脆说没学过C语言。究竟什么是指针呢?我们先来看一个概念。 直接引用 1. 回想一下,之前我们是如何更改...

Corwien
2016/03/15
27
0
JNI之C语言简单回顾

一.C语言基本数据类型: c语言中 char, int, float, double, signed, unsigned, long, short and void // java 中的8大本数据类型和他们的长度 // byte 1 char 2 short 2 int 4 long 8 double......

长平狐
2012/09/03
60
0
智能指针的设计

智能指针是c++中一个很重要的概念,其实吧,如果c++设计得足够好,智能指针本不应该出现的,c++标准库的智能指针主要解决了两个问题,一个问题是内存释放问题,另一个问题是指针复用问题,也...

晨曦之光
2012/04/10
122
0
SWIG入门3: C/C++初级特性

众所周知,SWIG这个项目建立的原因,是为大家提供简洁而又自然的脚本语言接口。什么是简洁而自然呢?它的意思就是C/C++的函数就直接被封装为python的函数,class就被封装成python的class。 ...

costaxu
2012/08/11
0
2

没有更多内容

加载失败,请刷新页面

加载更多

Java Lock接口分析之ReentantReadWriteLock

ReentantReadWriteLock读写锁,在读线程多余写线程的并发环境中能体现出优异的性能,相比于synchronized与ReentrantLock这种独占式锁的模型,ReentantReadWriteLock采用独占式写锁与共享式读...

我爱春天的毛毛雨
30分钟前
1
0
EFK (Fluentd ElasticSearch Kibana) 采集nginx日志

本文描述如何通过FEK组合集中化nginx的访问日志。本人更喜欢按顺序来命名,所以使用FEK而不是EFK. 首先在nginx服务器上执行以下操作. 安装ruby http://blog.csdn.net/chenhaifeng2016/artic...

xiaomin0322
32分钟前
1
0
一键下载:将知乎专栏导出成电子书

老是有同学问,学了 Python 基础后不知道可以做点什么来提高。今天就再用个小例子,给大家讲讲,通过 Python 和爬虫,可以完成怎样的小工具。 在知乎上,你一定关注了一些不错的专栏(比如 ...

crossin
41分钟前
2
0
synchronized 之 对象锁 和 类锁

一、synchronized(object) 如果object没有被加锁,则获取object的锁;如果object已经被加锁则等待object的锁被释放。 二、需要加锁的情景 多线程共享同一资源会引起线程安全的情况下,才需要...

MyOldTime
42分钟前
7
0
tomcat 单机/多机 部署多应用

一.单机部署多应用: 1.在 linux 下解压安装两个 tomcat:tomcat1, tomcat2; 2.修改 /etc/profile, 增加 tomcat 环境变量: path 中加上 重新加载配置文件 source /etc/profile 3.修改 tomc...

imbiao
53分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部