指针是什么?

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

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

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

间接访问:将变量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. Oracle RAC和SCAN同时对外提供服务的配制方法

    1,  tnsnames.ora on two nodes:RACTEST =  (DESCRIPTION =    (ADDRESS = (PROTOCOL = TCP)(HOST = racsca ...

  2. c++新标准的一个问题

    显示转换运算符存在多个兼容版本的时候,explicit 关键字无效,编译器默认会选择那个兼容版本进行转换,而不是报错. 测试环境:gcc4.8.1 示例代码: class plebe { privat ...

  3. [原]如何在Android用FFmpeg+SDL2.0之同步音频

    同步音频的原理可以参考:http://dranger.com/ffmpeg/tutorial05.html  本文是在 [原]如何在Android用FFmpeg+SDL2.0之同步视频 的基础上面继续 ...

  4. (转)tcp的半连接与完全连接队列

    队列及参数   tcp-sync-queue-and-accept-queue-small.jpg server端的半连接队列(syn队列) 在三次握手协议中,服务器维护一个半连接队列,该队列为每个客 ...

  5. MATLAB入门学习(七)

    开始,线性代数和微积分了,不怕.不怕. 背命令就行了... 线性代数 解线性方程组: Ax=b A是系数矩阵,x未知数,b是列向量 如果有唯一解,直接x=b\A 第二 B=null(A,'r')求Ax ...

  6. 苹果手机(ios系统)蓝牙BLE的一些特点

    摘自<BluetoothDesignGuidelines.pdf>文档 1. pairing: 苹果手机无法主动发起SMP配对流程,可通过以下两种方式发起配对流程: (1)从端主动发起配对 ...

  7. 小知识积累-C++使用tinyxml解析Xml内存泄漏问题

    项目中需要用到C++解析XML,网上搜到tinyxml这么个开源库,就用了下试试,创建对象后内部自带Clear方法,但在循环测试的时候(刚用C++做项目不久,不会什么特别的内存泄漏测试工具,于是就写个 ...

  8. jquery ajax 标准写法

    $.ajax({ url:"http://www.microsoft.com", //请求的url地址 dataType:"json", //返回格式为json ...

  9. Centos7 中使用Supervisor守护进程

    转:https://www.cnblogs.com/qmhuang/p/8196132.html 配置supervisor实现进程守护 1.安装supervisor yum install Super ...

  10. SignalR 教程一

    转帖官方教程:Tutorial: Getting Started with SignalR 2 and MVC 5 http://www.asp.net/signalr/overview/gettin ...