【ccc】为了ds的ccc2
作业:
#include <stdio.h>
#include<string.h>
int main(){
char s[100];
gets(s);
int len;
len = strlen(s);
for(int i=0;i<len-1;i++){
printf("%c\n",s[i]);
}
puts(s);
}
//
hello
h
e
l
l
hello
指针:
值传递
#include <stdio.h>
#include<string.h> void change(int j){
j=5;//形参
}
int main(){
int i =10; //i是局部变量
printf("befor change i=%d\n",i);
change(i);//函数调用时,i是实参
printf("after change i=%d\n",i);
return 0;
}
指针:
#include <stdio.h>
#include<string.h> void change(int *j){
*j=5;//形参
}
int main(){
int i =10; //i是局部变量
printf("befor change i=%d\n",i);
// change(i);//函数调用时,i是实参
// printf("after change i=%d\n",i);
change(&i); //函数调用时,&i是实参
printf("afterer i=%d",i);
return 0;
}
如果是需要到改变函数值的时候,可以使用指针来对值进行修改,取到地址值,再将地址值对应的形参赋值给实参达到改变的目的;
指针的偏移:
场景: 数组不能和整型变量,浮点型,字符型变量类比
数组名 a 类型是数组,a里面存了一个值,是地址值,是数组的起始地址。
#include <stdio.h>
#include<string.h>
int main(){
int a[5]={1,2,3,4,5};
int *p;//对一个指针变量进行取值,得到的类型是其基类型
p=a;
printf("*p=%d",*p);
}
内存权限(3):可读,可写,可读写
常见错误:
对应内存位置不可读
int main(){
int a[5]={1,2,3,4,5};
int *p;//对一个指针变量进行取值,得到的类型是其基类型
p=a;
printf("*p=%d\n",*p);
for(int i=0;i<5;i++){
printf("%d\n",*(p+i));
//p+i的优先级 比*低
}
return 0; }
*p=1
1
2
3
4
5
指针自增 自减
#include <stdio.h>
#include<string.h>
//指针自增自减
int main(){
int a[3]={2,7,8};
int *p;
int j;//j的地址 指针
p=a;//让指针变量p,指向数组的开头
j=*p++;//先把*p的值赋值给j,然后对p+1 //j=*p;如果不是(*p)++ 那么就是先p++
// j=(*p)++;//给这里加了括号是指的是这个地址对应的数值+1 也就是a[0]=2,变成a[0]=3;
printf("a[0]=%d,j=%d,*p=%d\n",a[0],j,*p); //2,2,7
j=p[0]++;//j=p[0];p[0]++;
printf("a[0]=%d,j=%d,*p=%d\n",a[0],j,*p);//2,2,7 的基础上再执行 结果:2,7,8
system("pause");
return 0;
}
//一维数组 数组传递是弱化为指针的 char d[] =*d void change(char *d){
*d ='H';
*d = 'E';
}
int main(){
char c[10]="hello";
change(c);
puts(c);
return 0;
}
void change(char *d){
*d ='H';
d[1] = 'E';
d[2]='L';
//传递与偏移
}
int main(){
char c[10]="hello";
change(c);
puts(c);
return 0;
}
//指针与动态内存申请 列表 二叉树 图——动态对应的堆空间;
//整型、浮点型、字符型变量、数组放在栈空间
栈的效率高 直接定义了空间
动态申请(很重要
malloc -- free -- NULL
int main(){
int i;
char *p;//起始地址
scanf("%d",&i);
p=(char*)malloc(i);//申请空间的接口 单位是字节 很重要
strcpy(p,"malloc success");
puts(p);
free(p);//释放空间时,p得值必须和最初得申请一致
printf("free success\n");
p=NULL; //如果不把p值设置为NULL p就被称为野指针
system("pause");
}
栈空间与堆空间区别
子函数里写一个栈空间的东西;
主函数里如果函数执行时结束子函数的内容时,就会将子函数执行结束栈空间释放掉;
puts();打印不出子函数里的栈里的内容了;
如果是堆函数(声明时,最好要强转,类型一致比较好)
在子函数里打印puts正常,在主函数里打印puts都正常
子函数中申请的堆空间,如果不free就会一直在,即使子函数结束,也不会影响堆空间;
指针
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(){
int i;
scanf("%d",&i);
char *p;
p = (char*)malloc(i);
char c;
scanf("%c",&c);
gets(p);
puts(p);
return 0;
}
双指针 就是一个指针是地址 另一个指针的写的是那个指针的位置
【ccc】为了ds的ccc2的更多相关文章
- 创建Azure DS 虚拟机并附加SSD硬盘
$subscriptionName = "Windows Azure Enterprise Trial" #订阅名称 $location = "China East&qu ...
- DS实验题 融合软泥怪-2 Heap实现
题目和STL实现:DS实验题 融合软泥怪-1 用堆实现优先队列 引言和堆的介绍摘自:Priority Queue(Heaps)--优先队列(堆) 引言: 优先队列是一个至少能够提供插入(Insert) ...
- Hyper-V 2012 R2 故障转移群集之建立域控(AD DS)与加入域
Windows 2012 R2建立域控(AD DS)与加入域 Active Directory概述: 使用 Active Directory(R) 域服务 (AD DS) 服务器角 ...
- dataGridViewX和数据库的链接之dataGridViewX1.DataSource = ds.Tables[0];
dataGridViewX1.DataSource = ds.Tables[0]; 1, dataGridViewX和数据库链接,如果我们用 dataGridViewX1.DataSource = d ...
- C段旁注工具CCC.exe
C段旁注工具CCC.exe可以进行C段的web站点批量查询 自动排除DNS错误的域名以及IP和当前服务器不符的域名 抓取bing上的所有URL,不光是域名信息,方便直接进入 自动生成html报告,方便 ...
- Windows Azure Virtual Machine (26) 使用高级存储(SSD)和DS系列VM
<Windows Azure Platform 系列文章目录> Update: 2016-11-3,如果大家在使用Linux VM,使用FIO进行IOPS测试的时候,请使用以下命令: su ...
- code vs1262 不要把球传我(组合数学) 2012年CCC加拿大高中生信息学奥赛
1262 不要把球传我 2012年CCC加拿大高中生信息学奥赛 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 白银 Silver 题解 查看运行结果 题目描述 De ...
- DS Tree 已知后序、中序 => 建树 => 求先序
注意点: 和上一篇的DS Tree 已知先序.中序 => 建树 => 求后序差不多,注意的地方是在aftorder中找根节点的时候,是从右往左找,因此递归的时候注意参数,最好是拿纸和笔模拟 ...
- [DS Basics] Data structures
1, LinkedList composed of one and one Node: [data][next]. [head] -> [data][next] -> [data][nex ...
- DS实验题 Old_Driver UnionFindSet结构 指针实现邻接表存储
题目见前文:DS实验题 Old_Driver UnionFindSet结构 这里使用邻接表存储敌人之间的关系,邻接表用指针实现: // // main.cpp // Old_Driver3 // // ...
随机推荐
- i春秋Do you know upload?
打开题目是一个文件上传,就先写了一个一句话木马的php文件,直接提交显示文件类型不允许.于是乎将其改为jpeg格式上传,成功了,但是没用,菜刀连不上.再次上传jpg格式的一句话木马(写好php木马后将 ...
- python安装request及更新pip
今天在python中安装request模块时遇到了问题 爆出一大堆警告 最主要的是下面的 这里的解决方法就是更新pip: 直接使用系统给的pip升级指令好像不行 百度搜了一下,有两步 1.在C:\Py ...
- MyEclipse连接MySQL
在官网http://www.mysql.com/downloads/下载数据库连接驱动 本文中使用驱动版本为mysql-connector-java-5.1.40 一.创建一个java测试项目MySQ ...
- tostring、(string)和 String.valueOf()
上周遇到一个问题,只怪自己平时没注意这个细节,从数据库取数据在map集合里,取出该值是我用了.tostring的方法,一次在当取出数据为空时代码报java.lang.NullPointerExcept ...
- Task01:Matplotlib初相识
一.明晰绘制一张图的组成条件 Figure:最基本的一级 Axes:在Figure上创建子图的容器(如果Figure中仅含一子图,则该容器可省略) Axis:用于处理子图上和坐标轴和网格相关的元素 T ...
- Zabbix技术分享——使用docker-compose快速部署zabbix监控系统
前面文章有提到过使用docker来快速拉起一个zabbix监控系统(详见:如何使用docker快速部署一个zabbix监控系统),但是要一个个执行docker启动命令去将对应的容器启动.如果要配置参数 ...
- Thrift RPC添加access log
前言: 当我们在部署web服务的时候,web容器通常都会记录来自客户端的访问日志.而当我们使用Thrift RPC服务的时候,Thrift服务则不会给我们自动记录客户端的访问日志. 通过这篇文章,你可 ...
- 1.5 HDFS分布式文件系统-hadoop-最全最完整的保姆级的java大数据学习资料
目录 1.5 HDFS分布式文件系统 1.5.1 HDFS 简介 1.5.2 HDFS的重要概念 1.5.3 HDFS架构 1.5 HDFS分布式文件系统 1.5.1 HDFS 简介 HDFS(全称: ...
- Python requests 上传文件(以上传图片为例)
from requests_toolbelt import MultipartEncoderimport requests encoderl = MultipartEncoder( fields = ...
- 最大值减去最小值小于或等于 num 的子数组数量问题
最大值减去最小值小于或等于 num 的子数组数量问题 作者:Grey 原文地址: 博客园:最大值减去最小值小于或等于 num 的子数组数量问题 CSDN:最大值减去最小值小于或等于 num 的子数组数 ...