指针是什么?

一个 变量的地址称为该变量的"指针"【将地址形象化的称为“指针”】。(指针是什么百度百科)

  注意区分储存单元的地址和内容这两个概念的区别。

直接访问:直接按变量名进行访问,直接通过变量名访问变量内容

间接访问:将变量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语言程序设计-谭浩强】的更多相关文章

  1. C语言程序设计·谭浩强(第四版)第二章课后习题的答案,算法——程序的灵魂

    C语言程序小练习 1.用C语言设计程序算出1-1/2+1/3-14+1/5...+1/99-1/100的值 #include<stdio.h> int main() { ; double ...

  2. c++面向对象程序设计 谭浩强 第一章答案

    c++面向对象程序设计 谭浩强 答案 第一章 目录: c++面向对象程序设计 谭浩强 答案 第一章 c++面向对象程序设计 谭浩强 答案 第二章 c++面向对象程序设计 谭浩强 答案 第三章 c++面 ...

  3. c++面向对象程序设计 谭浩强 第三章答案

    2: #include <iostream> using namespace std; class Date {public: Date(int,int,int); Date(int,in ...

  4. c++面向对象程序设计 谭浩强 第二章答案

    类体内定义成员函数 #include <iostream> using namespace std; class Time { public: void set_time(); void ...

  5. c++面向对象程序设计 谭浩强 第五章答案

    1: #include <iostream> using namespace std; class Student {public: void get_value() {cin>&g ...

  6. C语言学习笔记---谭浩强

    前段时间有机会去面试了一次,真是备受“打击”(其实是启发),总的来说就是让我意识到了学习工具和学习技术的区别.所以最近在看一些数据结构和算法,操作系统,python中的并行编程与异步编程等东西.然而数 ...

  7. 再论谭浩强《C语言程序设计》

    一些同学学不好C语言,把罪责归于“因为教材是谭浩强写的”实在是很滑稽. 谭浩强老先生 1934 年生,现在已经 80 岁了.他 1958 年从清华大学自动控制系毕业,那年 24 岁.要知道 C 语言那 ...

  8. 从谭浩强的《C语言程序设计》到《电容应用分析精粹》

    不记得具体从什么时候开始(反正很多年前的事了)的,不少人都陆续批评过谭浩强的<C语言程序设计>,各方面都有扒过.例如,与实践脱节,很多例子在不同编译器上运行是错误的,代码风格糟糕等等方面. ...

  9. 挂羊头卖狗肉蓄意欺骗读者——谭浩强《C程序设计(第四版)》中所谓的“按照C99”(二)

    挂羊头卖狗肉蓄意欺骗读者——谭浩强<C程序设计(第四版)>中所谓的“按照C99”(二) 在<谭C>p4:“本书的叙述以C99标准为依据”,下面从C89到C99的主要变化方面来看 ...

随机推荐

  1. calculate fraction by oracle

    QUESTION:When you meet calculate fraction in oracle SOLUTION: 1.Check out their values respectively. ...

  2. js函数 标签: javascript 2016-08-12 16:48 56人阅读 评论(0) 收藏

    函数实际上是对象,函数名实际上也是一个指向函数对象的指针. 使用不带圆括号的函数名是访问函数指针,而非调用函数. 函数声明和函数表达式: alert(test(2,3)); function test ...

  3. 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 ...

  4. 第五周 day5 python学习笔记

    1.软件开发的常规目录结构 更加详细信息参考博客:http://www.cnblogs.com/alex3714/articles/5765046.html         2.python中的模块 ...

  5. AWESOME SWIFT-swift.libhunt.com-swift类库网站

    https://swift.libhunt.com/categories/688-events 29 Events libraries and projects ORDERED BY POPULARI ...

  6. WK 与 JS 的那些事

    苹果在iOS 8中推出了 WKWebView,这是一个高性能的 web 框架,相较于 UIWebView来说,有巨大提升.本文将针对 WKWebView 进行简单介绍,然后介绍下如何和 JS 进行愉快 ...

  7. CPP-基础:互斥量

    互斥量的用途和临界区很像.它与临界区的差别在于可以跨线程使用,可以用来同步进行多个线程间的数据访问,但是是以牺牲速度为代价的.只有临界区是非核心对象,那么互斥量就是一个核心对象了.核心对象的特点是有所 ...

  8. sqoop 1.99.7 安装及配置

    一  下载sqoop 1.99.7 http://mirror.bit.edu.cn/apache/sqoop/1.99.7/ 二 解压安装文件 三 配置Sqoop 环境变量 最后把mysql的驱动j ...

  9. GetSystemMetrics()函数的用法 转

    转自 http://www.cnblogs.com/lidabo/archive/2012/07/10/2584725.html 可以用GetSystemMetrics函数可以获取系统分辨率,但这只是 ...

  10. 第23章 I2C—读写EEPR

    本章参考资料:<STM32F76xxx参考手册>.<STM32F7xx规格书>.库帮助文档<STM32F779xx_User_Manual.chm>及<I2C ...