关于指针的笔记【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的主要变化方面来看 ...
随机推荐
- 【Leetcode】【Hard】Reverse Nodes in k-Group
Given a linked list, reverse the nodes of a linked list k at a time and return its modified list. If ...
- 安装python File "/usr/bin/pip", line 11, in <module> sys.exit(main()) File "/usr/lib/python3.4/site-packages/pip/__init__.py", line 215, in main locale.setlocale(locale.LC_ALL, '') File "/u
$ uname -a Linux debian 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt11-1+deb8u6 (2015-11-09) x86_64 GNU ...
- MVC 接收参数时会自动解码
MVC在接收传递过来的参数时,会自动对参数进行解码,无需手动解码 例: public ActionResult SendMsg2(string name) { return Content(name) ...
- 来自Google资深工程师的API设计最佳实践
来自Google资深工程师Joshua Bloch的分享:API设计最佳实践 为什么API设计如此重要?API是一个公司最重要的资产. 为什么API的设计对程序员如此重要? API一旦发布,出于兼容性 ...
- CTSC2018 && APIO2018 && SDOI2018R2游记
Day -? 占个坑先.希望CTSC,APIO别打铁,R2别滚粗QAQ CTSC Day 0 早起坐车睡觉颓废报道颓废 反正游记就是咕懒得写了 Day 1 早上四点被xp的闹钟吵醒(???还两次) 幸 ...
- PHP------XML
XML XML的含义:可扩展标记语言,设计出来的目的是:传输数据 HTML的含义:超文本标记语言,设计出来的目的是:显示数据 它们两个设计出来的目的是不一样的. 它们两个都是标记语言,相似性比较高. ...
- argsort
argsort函数返回的是数组值从小到大的索引值One dimensional array:一维数组 >>> x = np.array([3, 1, 2]) >>> ...
- .net 基础(一)
方法 只需要考虑2个 东西 1. 方法的参数 2.方法的返回值 当参数的个数不确定的时候,可以采用可变参数params. params 数组的 个数,不确定.当传入的 参数为空的时候,可变参数的数组 ...
- 根据身份证获取地址(mysql)
e Encoding : Date: :: */ ; -- ---------------------------- -- Table structure for `s_area_code` -- - ...
- HDU 1248 寒冰王座 (完全背包)
传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1248 寒冰王座 Time Limit: 2000/1000 MS (Java/Others) M ...