c语言指针的简单实例
c语言的指针的存在使得c语言对硬件的操控,以及灵活性得到了极大的提高。
但是指针的使用存在着很多难点问题。
#include<stdlib.h>
#include<stdio.h>
//这里的函数是指针做参数的例子,要知道这个特性可以弥补c语言只能有一个返回值的特性。
void swap1(int *pa,int *pb){
int t =*pa;
*pa=*pb;
*pb=t;
}
//main()函数必须要返回一个数字
int main(){
int a =;
int b=;
int* t;
t=&b;
a=b;
b=*t;
printf("%d\n",b);
swap1(&a,&b);
printf("%p\t%p",a,b);
return ;
}
这里我们先定义两个整型的变量a,b
然后再定义一个临时的指针变量,用来存储中间变量
然后将b的变量的内存地址赋值给t,注意这里 t 代表的是内存地址
然后把b的值给a,再用b接受t地址所存储的变量, 注意这里的*t是指t这个地址所指的那个变量。
指针与数组
其实数组的int a[10];
里来说a其实是这个数组的第一个元素的a[0]的指针
所以数组变量本身就是表达地址,所以
int a[];
int *p=a; //无需用&取地址 但是数组的单元表达的是变量,需要用&取地址
a==&a[]; []运算符可以对数组做,也可以对指针做: p[] <==>a[];
这里的p[]相当于*p *a可以表示a[] 数组变量是const的指针
const 这个修饰符的作用就是表明一个变量是指定的值不能改变了
int* const p=&i; //p是const *q=;//OK
q++; //ERROR
int ls=;
int ls1=;
int* const q=&ls;
*q =;
*q=;
// q = &ls1; 这句是不能通过编译的,因为这个指针是不能指向其他位置的地址
//执行成功说明这里的指针变量是可以被改变的
ls= ;
printf("\n%d",*q);
//然后我们来看另外一种情况
int P1=;
int P2=;
int const *T=&P1;
T=&P2;//执行结果为30
//*T =15;这里是不能通过编译的,因为这个指针指向的位置存储的变量是不能赋值改变的。
P2=;
printf("\n%d",*T);
//关键在于这里的const是在*的前面还是后面决定的
return ;
void mai(const int*p){
int *ls=*p;
printf("ls的地址:%p",ls);
}
这里我们传入了一个指针,但是在函数里,是不能改变这个指针所指向的值的
指针的运算
#include<stdio.h>
#include<stdlib.h> int main(){
int i,j;
i=;j=;
printf("i,j:%d,%d\n",&i,&j);
printf("i,j:%d,%d",*&i+,&j);
printf("\n&i-&j:%d",(&i)-(&j));//这里两个地址做差其实是地址差/类型所占的位数 int *p;
p=&i;
*p++;//实际上是*(p++);++优先级比*高;数组遍历
printf("\n*p:%d",*p);
return ;
}
指针的类型转换
void*表示不知道指向什么东西的指针
指针变量的大小是相同的但是,指针是有类型的差别
总之指针的作用
、需要传入较大的数据的时候用做参数
、传入数组后对数组做操作
、函数返回的结果不止一个的时候可以用指针带出(c只能return一个变量,或者值)
需要要用函数来修改不止一个变量
、动态申请内存.......
具体的后续会更。
c语言指针的简单实例的更多相关文章
- 程序演示:C语言第一个简单实例
在信息化.智能化的世界里,可能很早很早 我们就听过许多IT类的名词,C语言也在其中,我们侃侃而谈,到底C程序是什么样子?让我们先看简单的一个例子: 1 2 3 4 5 6 7 8 9 #include ...
- Go 语言指针
Go 语言中指针是很容易学习的,Go 语言中使用指针可以更简单的执行一些任务. 接下来让我们来一步步学习 Go 语言指针. 我们都知道,变量是一种使用方便的占位符,用于引用计算机内存地址. Go 语言 ...
- GO语言学习(十五)Go 语言指针
Go 语言指针 Go 语言中指针是很容易学习的,Go 语言中使用指针可以更简单的执行一些任务. 接下来让我们来一步步学习 Go 语言指针. 我们都知道,变量是一种使用方便的占位符,用于引用计算机内存地 ...
- C语言-指针
C指针基础知识 C语言中,指针无疑是最令人头疼的.今天无事就来学学C语言的指针,在此留下点笔记,仅供个人参考. 首先要搞懂的是,指针是什么? 指针:是用来存放内存地址的变量. 不管是什么类型的指针,存 ...
- 利用navicat创建存储过程、触发器和使用游标的简单实例
利用navicat创建存储过程.触发器和使用游标的简单实例 标签: navicat存储过程触发器mysql游标 2013-08-03 21:34 15516人阅读 评论(1) 收藏 举报 分类: 数 ...
- [转]C语言指针学习经验总结浅谈
指针是C语言的难点和重点,但指针也是C语言的灵魂 . 这篇C语言指针学习经验总结主要是我入职以来学习C指针过程中的点滴记录.文档里面就不重复书上说得很清楚的概念性东西,只把一些说得不清楚或理解起来比较 ...
- 【转载】ANSYS的APDL与C语言混合编程(实例)
原文地址:http://www.cnblogs.com/lyq105/archive/2010/05/04/1727557.html 本文讨论的不是利用C语言为ANSYS写扩展(或者说是用户子程序), ...
- C语言指针学习
C语言学过好久了,对于其中的指针却没有非常明确的认识,趁着有机会来好好学习一下,总结一下学过的知识,知识来自C语言指针详解一文 一:指针的概念 指针是一个特殊的变量,里面存储的数值是内存里的一个地址. ...
- Docker初步认识安装和简单实例
前话 问题 开发网站需要搭建服务器环境,FQ官网下载软件包,搭建配置nginx,apache,数据库等.官网没有直接可用的运行版本,担心网络流传的非官方发布软件包不安全还得自行编译官方源码安装,忘记步 ...
随机推荐
- nios 使用count binary 例程 只是led不闪
系统id有问题的总结: 1, 复位是否正确.(特别使用拨码开关的) 2, 硬件连接是否有问题.(SDRAM的时序约束可以有,也可以没有) 3, 引脚分配是否正确.(SDRAM的dqm就错过一次) 4, ...
- Python Twisted系列教程11:改进诗歌下载服务器
作者:dave@http://krondo.com/your-poetry-is-served/ 译者:杨晓伟(采用意译) 你可以从这里从头阅读这个系列. 诗歌下载服务器 到目前为止,我们已经学习了大 ...
- SpringMVC 接收表单数据的方式
1.@RequestParam @RequestMapping(value = "/xxxx.do") public void create(@RequestParam(value ...
- android解析xml文件的方式
android解析xml文件的方式 作者:东子哥 ,发布于2012-11-26,来源:博客园 在androd手机中处理xml数据时很常见的事情,通常在不同平台传输数据的时候,我们就可能使用xm ...
- Collision Detection
[Collision Detection] Collision Detection是Rigidbody中的一个属性.所以显然Collision Detection指定的类型只在Rigidbody之间才 ...
- 粗粒度(Coarse-grained)vs细粒度(fine-grained)
在读的一篇文献中关于RDF的描述: As we know, RDF data is a set of triples with the form (subject, property, object) ...
- inux下安装ab
1,APR 下载地址:http://apr.apache.org/download.cgi 1)tar -zxf apr-1.4.5.tar.gz ./configure --prefix=/u ...
- IDEA maven打包时跳过测试
配置这个install -Dmaven.test.skip=true, 可以跳过business项目本地启动自动跑测试用例
- AutoHotKey 使用ADODB读取Excel 报ADODB.Connection 未找到提供程序,可能未提供
一.系统环境 操作系统:Win7 64位 英文版 Office: Office 2010 64位/32位 AutoHotKey:AutoHotKey 1.1.26.01 二.问题现象 安装了A ...
- jQuery--修改表单数据并提交
目的: 点击'编辑',弹出对话框,修改数据. 主要知识点: prevAll(),获取同级别本元素前面的所有元素. 代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ...