【C语言学习笔记】指针
用来存放一个变量地址的变量就叫指针变量。指针变量也是有类型约束的,一般什么类型的指针指向什么类型的变量。
指针之所以叫变量,是因为它里面所存放的变量的地址也是不断变化的,指针是可以移动的。
定义格式:
类型名 *指针变量名 eg:int *pi;
指针的作用都是一样的,都是用来存放地址的,为什么还要区分类型,因为指针变量只能存放特定定义类型的变量。
让指针存放一个变量的地址:
pi=&a;
&叫取址符,*叫指针运算符。
还有一种能存放指针变量地址的对象,他就是指向指针的指针。eg:int **p ; p=&s
给指针变量赋值:
1、通过求地址运算符(&)获得地址值
int k=1,*q,*p;
赋值语句为:q=&k;则把k的地址赋予了q,可以说变量q指向了变量k
注意:1、&只能用于变量和数组,不可以用于表达式、常量和被说明为register的变量,因此:q=&k+1 q=&(k+1)都是错误的。
2、&必须放在运算对象的左边,而且运算对象的类型必须与指针变量的类型相同。
2、通过指针变量获得地址值
可以通过赋值运算,把一个指针变量中的地址赋予另一个指针变量,从而使这两个指针指向同一个地址。
int k,*q,*p; q=&k ;p=q;
也就是说指针变量q和p都指向了变量k.
注意:当进行赋值运算时,赋值号两边的指针变量的基类型必须相同。
3、给指针变量赋空值
除了给指针变量赋地址值外,还可以给指针变量赋NULL值 。
eg:p=NULL;
当之真理上述语句之后,称p为空指针,NULL的代码值为0,等价于p='\0';p=0;
注意:p并不是指向地址为0的存储单元,而是一个有确定的值“空” int *p ; int *p=null;
对指针变量的操作:
1、通过指针来引用一个存储单元
C语言提供了一个称作“间接访问运算符”,的单目运算符
【C语言学习笔记】指针的更多相关文章
- c语言学习笔记 - 指针和字符串
前面学习了字符串是一种字符数组,又知道了指针变量和数组的关系,这里来看一下指针和字符串的关系. #include <stdio.h> int main(void){ char str = ...
- c语言学习笔记 - 指针和数组
结合内存存储数据的机制,c语言里指针的出现和使用也就不奇怪了,如果先学了内存的一些知识,以及程序运行机制,到了c指针这块就会清晰很多. #include <stdio.h> int mai ...
- c语言学习笔记.指针.
指针: 一个变量,其值为另一个变量的地址,即,内存位置的直接地址. 声明: int *ptr; /* 一个整型的指针,指针指向的类型是整型 */ double *ptr; /* 一个 double 型 ...
- C语言学习笔记--指针阅读技巧
1. 指针阅读技巧:右左法则 (1)从最里层的圆括号中未定义的标示符看起 (2)首先往右看,再往左看 (3)遇到圆括号或方括号时可以确定部分类型,并调转方向 (4)重复 2.3 步骤,直到阅读结束 注 ...
- C语言学习笔记--指针和数组的关系
1.数组的本质 (1)数组是一段连续的内存空间 (2)数组的空间大小:sizeof(array_type)*array_size; (3)数组名可看做指向数组第一个元素的常量指针 (4)数组声明时编译 ...
- C语言学习笔记--指针概念
指针也是一种变量,占有内存空间,用来保存内存地址,在32位系统中指针的占用的内存大小为4个字节 1.*号的意义 (1)在指针声明时,*号表示所声明的变量为指针 (2)在指针使用时,*号表示取指针所指向 ...
- C语言学习笔记--指针与字符串
字符类型 char(character)是一种整数,也是一种特殊的类型:字符.这是因为 ① 用单引号表示的字符字符字面量:‘a’,'1' ②‘’也是一个字符 ③printf和scanf里用%c来输入. ...
- Go语言学习笔记九: 指针
Go语言学习笔记九: 指针 指针的概念是当时学C语言时了解的.Go语言的指针感觉与C语言的没啥不同. 指针定义与使用 指针变量是保存内存地址的变量.其他变量保存的是数值,而指针变量保存的是内存地址.这 ...
- GO语言学习笔记(一)
GO语言学习笔记 1.数组切片slice:可动态增长的数组 2.错误处理流程关键字:defer panic recover 3.变量的初始化:以下效果一样 `var a int = 10` `var ...
- Go语言学习笔记十: 结构体
Go语言学习笔记十: 结构体 Go语言的结构体语法和C语言类似.而结构体这个概念就类似高级语言Java中的类. 结构体定义 结构体有两个关键字type和struct,中间夹着一个结构体名称.大括号里面 ...
随机推荐
- JS--插件: 树Tree 开发与实现
日常在Web项目开发时,经常会碰到树形架构数据的显示,从数据库中获取数据,并且显示成树形.为了方便,我们可以写一个javascript的一个跨浏览器树控件,后续可以重复使用.本节分享一个自己开发的JS ...
- pyecharts的使用
折线图1 import pyecharts.options as opts from pyecharts.charts import Line x_data = ["Mon", ...
- Python的字符串与字节码转换
一张图弄懂python的字符串与字节码转换
- Networking POJ - 1287
题目链接:https://vjudge.net/problem/POJ-1287 思路:最小生成树板子题 #include <iostream> #include <cstdio&g ...
- linux socket编程系统调用栈
目录 一.网络协议参考模型简介 二.SOCKET概述 三.SOCKET基本数据结构 1.TCP通信编程 2.服务器端实例代码 3.客户端实例代码 4.头文件socketwrapper.h 5.程序实现 ...
- windows server 2008 安装MySQL 8.0 遇到报错 1055 - Expression #1 of ORDER BY clause is not in GROUP BY
mysql安装参考教程:https://blog.csdn.net/qq_37350706/article/details/81707862 安装完毕后 执行sql语句 SELECT * FROM c ...
- 机器取代人类成为现实,Linux shell才可被取代?
机器取代人类成为现实,Linux shell才可被取代? 新睿云 新睿云 新睿云-让云服务触手可及 本次笔者用通俗易懂的语言介绍一下Linux shell,由于笔者能力有限,如有有描述不准确的地方还请 ...
- 杨巧丽 实验十四 团队项目评审&课程学习总结
实验十四 团队项目评审&课程学习总结 项目 内容 这个作业属于哪个课程 (https://www.cnblogs.com/nwnu-daizh/) 这个作业的要求在哪里 (https://ww ...
- 实验十四 团队项目评审&个人学习总结
实验十四 课程学习总结 项目 内容 这个作业属于哪个课程 (https://www.cnblogs.com/nwnu-daizh/) 这个作业的要求在哪里 (https://www.cnblogs.c ...
- CentOS7编译安装Keepalived2.0.19
实验环境:centos7 节点1:10.15.192.21 节点2:10.15.192.22 vip地址:10.15.192.23 1.下载文件 cd /usr/local/src wget http ...