C语言中针的用法

发布者:WhisperingGlow最新更新时间:2015-02-05 来源: 51hei关键字:C语言  指针  地址 手机看文章 扫描二维码
随时随地手机看文章

直接上例子讲解。

void max_min(array1)
int array1[10];
{
int *max,*min;  //-----------(1)  定义了两个指针变量 max,min
int k,l;
int *p,*end_p;
end_p=array1+10; //-----------(2) 将数组array1[0]地址+10作为一个新地址赋给 end_p 这个指针
max= array1;     //-----------(3) 将array1[0]的地址位赋给 max,将max的指针指向 array1数组。
min= array1;
for (p=array1+1;p p++  是指针所绑定的地址加 1,即指针指向和原来相邻的一个变量
{
 
 if (*p>*max)  max=p;        //-----------(4) 将指针p和指针max所指的变量的值进行比较,将比较大的那个变量的地址赋给 max这个指针,即指针max始终指向一个大的数据


 if (*p<*min)  min=p;
}

k=*max;                      //-----------(5)将指针max所指向的变量的值赋给k
*max=array1[0];array1[0]=k;  //-----------(6)  将array1[0]的值赋给指针max所指向的变量
l=*min;
*min=array1[9];array1[9]=l;
return; 
}

PS: max=&array1[0],是将array1[0]的地址赋给指针max

关键字:C语言  指针  地址 引用地址:C语言中针的用法

上一篇:芯片设计:写tb常用函数和语法
下一篇:keil软件使用的详细步骤

推荐阅读最新更新时间:2024-03-16 13:53

单片机C语言知识点全攻略(二)
第六课、C51运算符和表达式     上两课说了常量和变量,先来补充一个用以重新定义数据类型的的语句吧。这个语句就是 typedef,这是个很好用的语句,但我却不常用它,通常我定义变量的数据类型时都是使 用标准的关键字,这样别人能很方便的研读你的程序。如果你是个DELPHI 编程爱好者或是DELPHI程序员,你对变量的定义也许习惯了DELPHI 的关键字,如 int 类型常会用关键字Integer来定义,在用 单片机c语言时你还想用回这个的话,你能这样写:   typedef int integer;   integer a,b;   这两句在编译时,其实是先把 integer 定义为 int,在以后的语句中遇到
[模拟电子]
C语言指针变量的声明
在 C 语言中,变量的地址往往都是编译系统自动分配的,对我们用户来说,我们是不知道某个变量的具体地址的。所以我们定义一个指针变量 p,把普通变量 a 的地址直接送给指针变量 p 就是 p = 这样的写法。 对于指针变量 p 的定义和初始化,一般有两种方式,这两种方式,初学者很容易混淆,因此这个地方没别的方法,就是死记硬背,记住即可。 方法 1:定义时直接进行初始化赋值。 unsigned char a; unsigned char *p = 方法 2:定义后再进行赋值。 unsigned char a; unsigned char *p; p = 大家仔细看会看出来这两种写法的区别,它们都是正确的。我们在定义的
[单片机]
采用MSP430地址位多机协议通讯程序
/* 采用MSP430地址位多机协议通讯程序 微控论坛原创作品 作者:tianxy 各位同仁,响应版主号召,现就 爱好者 同志提出的 关于UART的地址位多机通讯 做出本人的见解.希望大家多多指点. 在 430串口发送格式中,我们可以看到.一个字节由1个起始位+7位或8位数据位+校验位+1位或2位停止组成.如果要使用 430的地址位多机协议.主要是将UxCTL寄存器中的MM位置1,同时将UxRCTL寄存器中的URXWIE置1. 例程如下: 上位机先用Mark校验方式.格式为:1个起始位+8位数据位+1位校验位+1位停止位. 发送5个字节:0x02(地址号) 0x05(命令字节) 0x00(预留字节) 0x07(累加和校验低字节)
[单片机]
ARM linux内核启动时几个关键地址
1.内核启动地址 1.1.名词解释 ZTEXTADDR 解压代码运行的开始地址。没有物理地址和虚拟地址之分,因为此时MMU处于关闭状态。这个地址不一定时RAM的地址,可以是支持读写寻址的flash等存储中介。 Start address of decompressor. here's no point in talking about virtual or physical addresses here, since the MMU will be off at the time when you call the decompressor code. You normally call the kernel at
[单片机]
AVR C语言开发简介
Avr单片机和其他单片机一样,有自己的指令和寄存器,特定的IO口操作方法,有定时器,AD转换,串行口,PWM输出,EEPROM等。为了缩短大家学习的时间,快速的了解avr编程思路,拟定avr程序设计系列教程。我使用avr也不是很长时间,技术有限,错误再所难免,还请指出,以期改正。 【说明】:本页是针对从来没有碰过单片机或者用过单片机而没有用c语言的朋友,如果你已经用过其他单片机,此页说明可能对你没有很大帮助,且显得有些幼稚,请你跳过。 本站所有程序都是在icc+avrstudio下进行的,如果你没有配置好环境 采用icc的原因之一是它自带一个非常好用的application builder,生成的代码结构清晰,层次清楚
[单片机]
AVR <font color='red'>C语言</font>开发简介
C语言指针函数和函数指针
1、指针函数: 函数返回值可以是 int char float等,当然也可以是地址值,那么函数返回值是地址值得函数就定义为指针函数。即此函数的类型为指针类型,就是说改函数的返回值是指针类型。既然函数是指针类型那么其返回值必须用相同类型的指针变量来接受了。 如: int *Add(); int *p; === p = Add();(切记 函数返回的是地址值) 2、函数指针: 指针变量可以指向变量地址,数组,字符串,自然也可以指向函数了。已知每个函数在编译的时候,系统会分配给函数一个入口地址,函数名表示这个入口地址,定义指向函数的指针变量称之为函数的指针变量。 如: float fun(int,int); floa
[单片机]
单片机C语言(0到100计时)
基于51hei单片机开发板的计时器程序 #include reg52.h #define uint unsigned int #define uchar unsigned char uchar temp,bai,shi,ge,aa; sbit dula=P2^6; sbit wela=P2^7; uchar code table ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71}; void display(uchar bai,uchar shi,uchar ge
[单片机]
C语言编译过程中的错误分析
 语言的最大特点是:功能强、使用方便灵活。C编译的程序对语法检查并不象其它高级语言那么严格,这就给编程人员留下“灵活的余地”,但还是由于这个灵活给程序的调试带来了许多不便,尤其对初学C语言的人来说,经常会出一些连自己都不知道错在哪里的错误。看着有错的程序,不知该如何改起,本人通过对C的学习,积累了一些C编程时常犯的错误,写给各位学员以供参考。    1.书写标识符时,忽略了大小写字母的区别。   main()   {   int a=5;   printf("%d",A);   }   编译程序把a和A认为是两个不同的变量名,而显示出错信息。C认为大写字母和小写字母是两个不同的字符。习惯上,符号常量名用大写,变量名用
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved