关于指针的笔记【1】【C语言程序设计-谭浩强】
2018-12-04 07:14:28来源:博客园 阅读 ()
指针是什么?
一个 变量的地址称为该变量的"指针"【将地址形象化的称为“指针”】。(指针是什么百度百科)
注意区分储存单元的地址和内容这两个概念的区别。
直接访问:直接按变量名进行访问,直接通过变量名访问变量内容
间接访问:将变量a的地址存放到另一个变量b中,然后通过变量b找到变量a的地址,从而访问变量a的内容。
指针变量
一个变量a专门用来存放另一个变量b的地址(即指针),则称变量a为指针变量。
指针变量就是地址变量,用来存放地址,指针变量的值就是地址(即指针)。
注意区分指针与指针变量这两个概念。(指针是一个地址,指针变量是存放地址值的变量)
指针使用例子:
1 #include <stdio.h> 2 int main() 3 { 4 int a=100,b=10; 5 //定义整型变量a,b,并初始化 6 int * pointer_1, * pointer_2; 7 //定义指向整数型数据的指针变量 pointer_1,pointer_2 8 pointer_1=&a; 9 //把变量a的地址赋给指针变量pointer_1 10 pointer_2=&b; 11 //把变量b的地址赋给指针变量pointer_2 12 printf("a=%d,b=%d\n",a,b); 13 //通过变量名直接访问a和b的值 14 printf("* pointer_1=%d, * pointer_2=%d\n", * pointer_1, * pointer_2); 15 //通过指针变量间接访问输出a和b的值 16 17 return 0; 18 }
定义指针变量的格式:
类型名 * 指针变量名;(可以在定义时同时对它初始化)
类型名是在定义指针变量时必须指定的“基类型”,基类型用来指定此指针变量可以指向的变量的类型。
因此,指针变量是基本数据类型派生出来的类型,它不能离开基本数据类型而独立存在。
一个变量的指针的含义包括两个方面,一是一存储单元编号表示的地址,一是它指向的存储单元的数据类型(如 int,char,float等)。
说明指针变量a时,应该说:a是指向(基本数据类型)的指针变量
引用指针变量
给指针变量赋值:
p=&a; //把a的地址赋值给指针变量p
引用指针变量指向的变量:
printf("%d", * p);//以整数型式输出指针变量p所指向的变量的值,即变量a的值
* p =1; //表示把整数1赋给p当前所指向的变量,如果p指向变量a,则相当于把1赋给a,即“a=1”。
引用指针变量的值:
printf("%o",p);//作用是以八进制数型式输出指针变量p的值,如果p指向a,就是输出a的地址,即&a
注意:熟悉这两个运算符
1.& 取地址运算符
2.* 指针运算符(“间接访问”运算符),*p代表指针变量p指向的对象
示例代码:
1 #include <stdio.h> 2 int main(){ 3 int *p1, *p2, a, b; 4 printf("please enter two integer numbers:"); 5 scanf("%d,%d",&a,&b); 6 p1=&a; 7 p2=&b; 8 if(a<b){ 9 p1=&b; 10 p2=&a; 11 } 12 printf("a=%d,b=%d\n",a,b); 13 printf("max=%d,min=%d\n", *p1, *p2); 14 return 0; 15 }
指针变量作为函数参数
1 #include <stdio.h> 2 int main(){ 3 void swap(int *pi,int *p2); 4 int a,b; 5 int *pointer_1, *pointer_2; 6 printf("pleadse enter a and b:"); 7 scanf("%d,%d",&a,&b); 8 pointer_1=&a; 9 pointer_2=&b; 10 if(a<b){ 11 swap(pointer_1,pointer_2); 12 } 13 printf("max=%d,min=%d\n",a,b); 14 return 0; 15 } 16 void swap(int *p1,int *p2){ 17 int temp; 18 temp= *p1; 19 *p1= *p2; 20 *p2= temp; 21 }
可以在函数内通过操作指针,改变函数外数据。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:Codeup
下一篇:第三章 变量、函数和流程控制
- 关于各种不同开发语言之间数据加密方法(DES,RSA等)的互通的 2020-06-07
- C++ this指针 2020-06-03
- OpenCV开发笔记(五十九):红胖子8分钟带你深入了解分水岭 2020-05-24
- 算法笔记刷题6 ( PAT 1003我要通过 ) 2020-05-08
- 关于使用ffmpeg的一些牢骚 2020-05-08
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash