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语言指针的简单实例的更多相关文章

  1. 程序演示:C语言第一个简单实例

    在信息化.智能化的世界里,可能很早很早 我们就听过许多IT类的名词,C语言也在其中,我们侃侃而谈,到底C程序是什么样子?让我们先看简单的一个例子: 1 2 3 4 5 6 7 8 9 #include ...

  2. Go 语言指针

    Go 语言中指针是很容易学习的,Go 语言中使用指针可以更简单的执行一些任务. 接下来让我们来一步步学习 Go 语言指针. 我们都知道,变量是一种使用方便的占位符,用于引用计算机内存地址. Go 语言 ...

  3. GO语言学习(十五)Go 语言指针

    Go 语言指针 Go 语言中指针是很容易学习的,Go 语言中使用指针可以更简单的执行一些任务. 接下来让我们来一步步学习 Go 语言指针. 我们都知道,变量是一种使用方便的占位符,用于引用计算机内存地 ...

  4. C语言-指针

    C指针基础知识 C语言中,指针无疑是最令人头疼的.今天无事就来学学C语言的指针,在此留下点笔记,仅供个人参考. 首先要搞懂的是,指针是什么? 指针:是用来存放内存地址的变量. 不管是什么类型的指针,存 ...

  5. 利用navicat创建存储过程、触发器和使用游标的简单实例

    利用navicat创建存储过程.触发器和使用游标的简单实例 标签: navicat存储过程触发器mysql游标 2013-08-03 21:34 15516人阅读 评论(1) 收藏 举报  分类: 数 ...

  6. [转]C语言指针学习经验总结浅谈

    指针是C语言的难点和重点,但指针也是C语言的灵魂 . 这篇C语言指针学习经验总结主要是我入职以来学习C指针过程中的点滴记录.文档里面就不重复书上说得很清楚的概念性东西,只把一些说得不清楚或理解起来比较 ...

  7. 【转载】ANSYS的APDL与C语言混合编程(实例)

    原文地址:http://www.cnblogs.com/lyq105/archive/2010/05/04/1727557.html 本文讨论的不是利用C语言为ANSYS写扩展(或者说是用户子程序), ...

  8. C语言指针学习

    C语言学过好久了,对于其中的指针却没有非常明确的认识,趁着有机会来好好学习一下,总结一下学过的知识,知识来自C语言指针详解一文 一:指针的概念 指针是一个特殊的变量,里面存储的数值是内存里的一个地址. ...

  9. Docker初步认识安装和简单实例

    前话 问题 开发网站需要搭建服务器环境,FQ官网下载软件包,搭建配置nginx,apache,数据库等.官网没有直接可用的运行版本,担心网络流传的非官方发布软件包不安全还得自行编译官方源码安装,忘记步 ...

随机推荐

  1. struct 方法使用

    struct _Worker { _Worker() { pWokerbase=NULL; hThread=INVALID_HANDLE_VALUE; pListConn=NULL; } struct ...

  2. java中的类型安全问题-Type safety: Unchecked cast from Object to ...

    首先,java语言室类型安全的,通常我们遇到这个问题是出现在Object转化为目标类型时, 这个转化并不是安全的.这个问题普遍认为因为使用了jdk1.5或者1.6的泛型, request.getAtt ...

  3. Ceph基本情况介绍

    Ceph基本情况的介绍 Ceph是一个分布式存储软件. 它支持用3种方式存储数据,分别是:对象存储.块设备存储.分布式文件系统存储. Ceph最初的目标是做一个分布式文件系统,直到现在这个目标也不能算 ...

  4. codeforce467DIV2——D. Sleepy Game

    分析 这个题乍一看有点像之前在CF上做过的一道DP,也是两个人下棋,但是写着写着觉得不对···这个题是的最优策略只是player 1 如果有环则是draw,可以DFS的时候顺便判环(拓扑排序的方法), ...

  5. mfs教程(二)

    mfs文件系统(二) 编译和安装 MooseFS部署的首选方法是从源代码安装 源代码包安装支持标准./configure && make && make install ...

  6. 443. String Compression字符串压缩

    [抄题]: Given an array of characters, compress it in-place. The length after compression must always b ...

  7. 模板模式和Comparable类

    模板模式中,父类规定好了一些算法的流程,并且空出一些步骤(方法)留给子类填充 Java的数组类中静态方法sort()就是一个模板,它空出了一个compareTo的方法,留给子类填充,用来规定什么是大于 ...

  8. Oracle——SQL基础

    一.SQL语句分为以下三种类型: DML: Data Manipulation Language 数据操纵语言DDL: Data Definition Language 数据定义语言DCL: Data ...

  9. Struts中ActionContext和ServletActionContext的比较

    一.ActionContext在Struts2开发中除了将请求参数自动设置到Action的字段中,往往也需要在Action里直接获取请求(Request)或会话(Session)的一些信息,甚至需要直 ...

  10. CSS3 grayscale滤镜图片变黑白

    1. 使整个页面的图片都变成灰色的,代码如下. html{     font-size: 100%;     -webkit-text-size-adjust: none;    -ms-text-s ...