关于指针的笔记【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的主要变化方面来看 ...
随机推荐
- Oracle RAC和SCAN同时对外提供服务的配制方法
1, tnsnames.ora on two nodes:RACTEST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = racsca ...
- c++新标准的一个问题
显示转换运算符存在多个兼容版本的时候,explicit 关键字无效,编译器默认会选择那个兼容版本进行转换,而不是报错. 测试环境:gcc4.8.1 示例代码: class plebe { privat ...
- [原]如何在Android用FFmpeg+SDL2.0之同步音频
同步音频的原理可以参考:http://dranger.com/ffmpeg/tutorial05.html 本文是在 [原]如何在Android用FFmpeg+SDL2.0之同步视频 的基础上面继续 ...
- (转)tcp的半连接与完全连接队列
队列及参数 tcp-sync-queue-and-accept-queue-small.jpg server端的半连接队列(syn队列) 在三次握手协议中,服务器维护一个半连接队列,该队列为每个客 ...
- MATLAB入门学习(七)
开始,线性代数和微积分了,不怕.不怕. 背命令就行了... 线性代数 解线性方程组: Ax=b A是系数矩阵,x未知数,b是列向量 如果有唯一解,直接x=b\A 第二 B=null(A,'r')求Ax ...
- 苹果手机(ios系统)蓝牙BLE的一些特点
摘自<BluetoothDesignGuidelines.pdf>文档 1. pairing: 苹果手机无法主动发起SMP配对流程,可通过以下两种方式发起配对流程: (1)从端主动发起配对 ...
- 小知识积累-C++使用tinyxml解析Xml内存泄漏问题
项目中需要用到C++解析XML,网上搜到tinyxml这么个开源库,就用了下试试,创建对象后内部自带Clear方法,但在循环测试的时候(刚用C++做项目不久,不会什么特别的内存泄漏测试工具,于是就写个 ...
- jquery ajax 标准写法
$.ajax({ url:"http://www.microsoft.com", //请求的url地址 dataType:"json", //返回格式为json ...
- Centos7 中使用Supervisor守护进程
转:https://www.cnblogs.com/qmhuang/p/8196132.html 配置supervisor实现进程守护 1.安装supervisor yum install Super ...
- SignalR 教程一
转帖官方教程:Tutorial: Getting Started with SignalR 2 and MVC 5 http://www.asp.net/signalr/overview/gettin ...