关于指针的笔记【1】【C语言程序设计-谭浩强】
指针是什么?
一个 变量的地址称为该变量的"指针"【将地址形象化的称为“指针”】。(指针是什么百度百科)
注意区分储存单元的地址和内容这两个概念的区别。
直接访问:直接按变量名进行访问,直接通过变量名访问变量内容
间接访问:将变量a的地址存放到另一个变量b中,然后通过变量b找到变量a的地址,从而访问变量a的内容。
指针变量
一个变量a专门用来存放另一个变量b的地址(即指针),则称变量a为指针变量。
指针变量就是地址变量,用来存放地址,指针变量的值就是地址(即指针)。
注意区分指针与指针变量这两个概念。(指针是一个地址,指针变量是存放地址值的变量)
指针使用例子:
#include <stdio.h>
int main()
{
int a=,b=;
//定义整型变量a,b,并初始化
int * pointer_1, * pointer_2;
//定义指向整数型数据的指针变量 pointer_1,pointer_2
pointer_1=&a;
//把变量a的地址赋给指针变量pointer_1
pointer_2=&b;
//把变量b的地址赋给指针变量pointer_2
printf("a=%d,b=%d\n",a,b);
//通过变量名直接访问a和b的值
printf("* pointer_1=%d, * pointer_2=%d\n", * pointer_1, * pointer_2);
//通过指针变量间接访问输出a和b的值 return ;
}
定义指针变量的格式:
类型名 * 指针变量名;(可以在定义时同时对它初始化)
类型名是在定义指针变量时必须指定的“基类型”,基类型用来指定此指针变量可以指向的变量的类型。
因此,指针变量是基本数据类型派生出来的类型,它不能离开基本数据类型而独立存在。
一个变量的指针的含义包括两个方面,一是一存储单元编号表示的地址,一是它指向的存储单元的数据类型(如 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指向的对象
示例代码:
#include <stdio.h>
int main(){
int *p1, *p2, a, b;
printf("please enter two integer numbers:");
scanf("%d,%d",&a,&b);
p1=&a;
p2=&b;
if(a<b){
p1=&b;
p2=&a;
}
printf("a=%d,b=%d\n",a,b);
printf("max=%d,min=%d\n", *p1, *p2);
return ;
}
指针变量作为函数参数
#include <stdio.h>
int main(){
void swap(int *pi,int *p2);
int a,b;
int *pointer_1, *pointer_2;
printf("pleadse enter a and b:");
scanf("%d,%d",&a,&b);
pointer_1=&a;
pointer_2=&b;
if(a<b){
swap(pointer_1,pointer_2);
}
printf("max=%d,min=%d\n",a,b);
return ;
}
void swap(int *p1,int *p2){
int temp;
temp= *p1;
*p1= *p2;
*p2= temp;
}
可以在函数内通过操作指针,改变函数外数据。
关于指针的笔记【1】【C语言程序设计-谭浩强】的更多相关文章
- C语言程序设计·谭浩强(第四版)第二章课后习题的答案,算法——程序的灵魂
C语言程序小练习 1.用C语言设计程序算出1-1/2+1/3-14+1/5...+1/99-1/100的值 #include<stdio.h> int main() { ; double ...
- c++面向对象程序设计 谭浩强 第一章答案
c++面向对象程序设计 谭浩强 答案 第一章 目录: c++面向对象程序设计 谭浩强 答案 第一章 c++面向对象程序设计 谭浩强 答案 第二章 c++面向对象程序设计 谭浩强 答案 第三章 c++面 ...
- c++面向对象程序设计 谭浩强 第三章答案
2: #include <iostream> using namespace std; class Date {public: Date(int,int,int); Date(int,in ...
- c++面向对象程序设计 谭浩强 第二章答案
类体内定义成员函数 #include <iostream> using namespace std; class Time { public: void set_time(); void ...
- c++面向对象程序设计 谭浩强 第五章答案
1: #include <iostream> using namespace std; class Student {public: void get_value() {cin>&g ...
- C语言学习笔记---谭浩强
前段时间有机会去面试了一次,真是备受“打击”(其实是启发),总的来说就是让我意识到了学习工具和学习技术的区别.所以最近在看一些数据结构和算法,操作系统,python中的并行编程与异步编程等东西.然而数 ...
- 再论谭浩强《C语言程序设计》
一些同学学不好C语言,把罪责归于“因为教材是谭浩强写的”实在是很滑稽. 谭浩强老先生 1934 年生,现在已经 80 岁了.他 1958 年从清华大学自动控制系毕业,那年 24 岁.要知道 C 语言那 ...
- 从谭浩强的《C语言程序设计》到《电容应用分析精粹》
不记得具体从什么时候开始(反正很多年前的事了)的,不少人都陆续批评过谭浩强的<C语言程序设计>,各方面都有扒过.例如,与实践脱节,很多例子在不同编译器上运行是错误的,代码风格糟糕等等方面. ...
- 挂羊头卖狗肉蓄意欺骗读者——谭浩强《C程序设计(第四版)》中所谓的“按照C99”(二)
挂羊头卖狗肉蓄意欺骗读者——谭浩强<C程序设计(第四版)>中所谓的“按照C99”(二) 在<谭C>p4:“本书的叙述以C99标准为依据”,下面从C89到C99的主要变化方面来看 ...
随机推荐
- calculate fraction by oracle
QUESTION:When you meet calculate fraction in oracle SOLUTION: 1.Check out their values respectively. ...
- js函数 标签: javascript 2016-08-12 16:48 56人阅读 评论(0) 收藏
函数实际上是对象,函数名实际上也是一个指向函数对象的指针. 使用不带圆括号的函数名是访问函数指针,而非调用函数. 函数声明和函数表达式: alert(test(2,3)); function test ...
- sql with 写法
with h_asign_id as ( select asign_id from assign_h h left join assignment a on a.id = h.asign_id whe ...
- 第五周 day5 python学习笔记
1.软件开发的常规目录结构 更加详细信息参考博客:http://www.cnblogs.com/alex3714/articles/5765046.html 2.python中的模块 ...
- AWESOME SWIFT-swift.libhunt.com-swift类库网站
https://swift.libhunt.com/categories/688-events 29 Events libraries and projects ORDERED BY POPULARI ...
- WK 与 JS 的那些事
苹果在iOS 8中推出了 WKWebView,这是一个高性能的 web 框架,相较于 UIWebView来说,有巨大提升.本文将针对 WKWebView 进行简单介绍,然后介绍下如何和 JS 进行愉快 ...
- CPP-基础:互斥量
互斥量的用途和临界区很像.它与临界区的差别在于可以跨线程使用,可以用来同步进行多个线程间的数据访问,但是是以牺牲速度为代价的.只有临界区是非核心对象,那么互斥量就是一个核心对象了.核心对象的特点是有所 ...
- sqoop 1.99.7 安装及配置
一 下载sqoop 1.99.7 http://mirror.bit.edu.cn/apache/sqoop/1.99.7/ 二 解压安装文件 三 配置Sqoop 环境变量 最后把mysql的驱动j ...
- GetSystemMetrics()函数的用法 转
转自 http://www.cnblogs.com/lidabo/archive/2012/07/10/2584725.html 可以用GetSystemMetrics函数可以获取系统分辨率,但这只是 ...
- 第23章 I2C—读写EEPR
本章参考资料:<STM32F76xxx参考手册>.<STM32F7xx规格书>.库帮助文档<STM32F779xx_User_Manual.chm>及<I2C ...