1、地址与指针
地址:就是内存区中对每个字节的编号
指针:可以看作是内存中的一个地址。在程序中定义了一个变量,在进行编译时就会给该变量在内存中分配一个地址,通过访问这个地址可以找到相应的变量,这个变量的地址称为该变量的“指针”。
如果一个变量专门来存放另一个变量的地址,它就是指针变量。在c语言中专门用来存放内存单元地址的变量类型即指针类型。
2、指针变量:
(1)指针变量的一般形式:类型说明*变量名     ;其中“*”表示该变量是一个指针变量,变量名即为定义的指针变量名,类型说明便是本指针变量所指向的变量的数据类型。
(2)指针变量的赋值:给指针变量的赋值只能赋予地址。     
一般形式为:&变量名;     
两种方法:
1)定义指针变量的同时就进行赋值,例如:int a; int *p=&a;
2)先定义指针变量之后再赋值,例如:int a; int *p; p=&a;
如果先定义完指针变量之后再赋值注意不要加“*”;
(3)指针变量的引用:引用指针变量是对变量进行简介访问的一种形式。
对指针变量的引用形式如:*指针变量;其含义是引用指针变量所指向的值。
(4)"&"和"*"运算符
运算符“&”一个返回操作数地址的单目运算符,叫做取地址运算符;
运算符“*”是单目运算符,叫做指针运算符,作用是返回指定地址内的变量的值。
(5)“&*”和“*&”的区别
“&”和“*”的运算符优先级别相同,按自右向左的方向结合。
例如:int a;
p=&a;
"&*p"就是先进行“*”运算,即“*p”相当于变量a;再进行“&”运算,就是说,“&*p”是取a的地址。同理“*&a”就是取变量a所在地址的值,就是变量a;
(6)指针自加自减运算:不同于普通变量的自增自减运算,这里的自增自减是地址的自增自减,加减的值和指针变量的类型有关。
3、一维数组与指针
当定义一个一位数组时,系统会在内存中为该数组分配一个存储空间,其数组名称就是数组在内存中的首地址,若再定义一个指针变量,并将数组的首地址传给指针变量,则该指针就指向了这个一维数组。
4、二维数组与指针
表示二维数组中元素地址的方法:
(1)&a[0][0]既可以看作数组0行0列的首地址,也可以看做二维数组的首地址。&a[m][n]就是第m行n列元素的地址。
(2)a[0]+n表示第0行第n个元素的地址
5、字符串与指针:
访问一个字符串有两种方式,一是使用字符数组来存放一个字符串,从而实现对字符串的操作;二是使用字符指针指向一个字符串,此时可不定义数组。
6、字符串数组
字符数组是一个一维数组,而字符串数组是以字符串作为数组元素的数组,可以将其看成一个二维字符数组。
例如:
char country[5][20]=
{
"China",
"Japan",
"Russia",
"Germany",
"Switzerland"
}
字符型数组变量country被定义为含有5个字符串的数组,每个字符串的长度要小于20(这里要考虑字符串最后的\0)。但这样浪费空间。但是用指针数组就好,不会浪费空间。
指针数组:一个数组,其元素均为指针类型数据,称为指针数组。也就是说,指针数组中的每一个元素都相当于一个指针变量。
例如:
int i;
char *month[]=
{
"January",
"February"
};
7、指向指针的指针
指向指针的指针变量定义如下:
 类型标识符 **指针变量名;例如:int **p;
其含义为定义一个指针变量p,它指向另一个指针变量,该指针变量又指向另一个基本整型变量。由于指针变量运算符*是自右自左结合,相当于:int *(*p);
8、C语言中实参变量和形参变量之间的数据传递是单向的“只传送”方式。指针变量做函数参数也是如此,调用函数不可能改变实参指针变量的值,但可以改变实参指针变量所指变量的值。
9、参数字符串的长度是不定的,并且参数字符串的长度不需要统一,且参数的数目也是任意的,并不规定具体个数。

《c语言从入门到精通》看书笔记——第10章 指针相关推荐

  1. 《c语言从入门到精通》看书笔记——第16章 网络套接字编程(上)——网络

    1.IP地址 每台计算机都需要一个IP地址以识别自己,IP地址由IP协议规定的32位的二进制表示,最新的IPV6协议将IP地址提升为128位,但还不能广泛应用. 32位的IP地址主要分为前缀和后最两部 ...

  2. 《c语言从入门到精通》看书笔记——第14章 文件

    1.文件的基本操作 (1)文件指针 文件指针是指向文件有关信息的指针,这些信息包含文件名,状态,和当前位置,他们保存在一个结构体变量中.在使用文件时需要在内存中为其分配空间,用以存放文件的基本信息.该 ...

  3. 《c语言从入门到精通》看书笔记——第13章 预处理

    1.宏定义 宏定义是预处理命令的一种,它提供了一种可以替换源代码中字符串的机制. 宏定义指令#define用来定义一个标识符和一个字符串,一这个标识符来代表这个字符串,在程序中每次遇到该标识符时就用所 ...

  4. 《c语言从入门到精通》看书笔记——第3章 数据类型

    1.编程规范 (1)代码缩进:统一为4字符,用Tab (2)变量常量命名规范:常量命名统一为大写格式.如果成员变量,均以m_开始.普通变量,取与实际意义相关的名称,要在前面添加类型的首字母,并且名称的 ...

  5. 《c语言从入门到精通》看书笔记——第2章 算法

    1.通常,一个程序包含算法.数据结构.程序设计方法及语言工具和环境这四个方面 2.算法的特性: 有效性.确定性.可行性.输入(一个算法应有零个获多个输入).输出(1个或多个) 3.算法的优劣: (1) ...

  6. 《c语言从入门到精通》看书笔记——第1章 C语言的概述

    1.使用普遍的高级语言有:Fortran/ALGOL/Basic/COBOL/LISP/Pascal/PRLOLG/C/C++/VC/VB/Delphi/Java等 2. C语言是一个面向过程的语言, ...

  7. 《c语言从入门到精通》看书笔记——第16章 网络套接字编程(下)——套接字

    1.套接字概述 套接字是网络通信的基石,是网络通信的基本构件. 所谓套接字,实际上是一个指向传输提供者的句柄.在WinSock中,就是通过操作该句柄来实现网络通信和管理的.根据性质和作用不同,套接字可 ...

  8. 《c语言从入门到精通》看书笔记——第15章 存储管理

    1.内存的组织方式 程序被组织成以下4个逻辑段 (1)可执行代码 (2)静态数据.可执行代码和静态数据存储在固定的内存位置 (3)动态数据(堆).程序请求动态分配的内存来自内存池,也就是上面所列举的堆 ...

  9. 《c语言从入门到精通》看书笔记——第12章 位运算

    1.按位运算就是对字节或字中的实际位进行检测.设置或移位. 位运算符 2.位段的概念与定义 位段类型是一种特殊的结构类型,其所有成员的长度均是以二进制位为单位定义的,结构中的成员被称为位段.位段定义的 ...

最新文章

  1. Linux 查看Pyhont的解释器大小
  2. 补充上次的将父类作为方法的返回类型
  3. 腾讯在线人数统计_PHP + REDIS 实践:统计在线人数的几种方案分析
  4. 自动判断PC端、手机端跳往不同的域名JS实现代码
  5. 无服务器安全性:将其置于自动驾驶仪上
  6. 玩转oracle 11g(27):ora-12154和客户端版本低
  7. win10怎么查看计算机用户名和密码,技术员详解win10系统查看电脑密码的详细方案...
  8. Savitzky-Golay 滤波器
  9. windows 7 开机启动提示bcd错误修复方法
  10. 《阴阳师·3黑川主》原作:梦枕貘
  11. html 弹窗实现拖拽,原生js实现自由拖拽弹窗代码demo
  12. 小白入门之HTML--第五章 块状元素,行内元素,盒子模型
  13. 写一首春天去野外写生的诗
  14. 2072-歌手大奖赛
  15. 【使用老电脑win7下载miniconda】
  16. 分享7个比B站更刺激的老司机网站,别轻易点开
  17. [MySQL] 运算符
  18. 计算机科学与技术的专业概论论文,计算机科学与技术专业概论论文.docx
  19. 英语单词复习2(四级)
  20. 使用KlipC避开平台扫止损,控制止盈和延迟订单成交

热门文章

  1. scn exercise view.setModel will trigger binding creation in Fiori
  2. 步骤2 - websocket服务器转发请求给orchestra
  3. SAP JAM的回收站
  4. SAP SuccessFactor学习中心的通知机制
  5. html 输入框变红色,input输入框 输入错误时,点击注册按钮,输入框的边框变成红色,重新输入时,边框颜色恢复原来的,同时错误提示消失?...
  6. python numpy np.array_Python | numpy | np.split()与np.array_split()函数
  7. 目前最厉害的象棋软件_qq什么引流方式最厉害,QQ引流目前最有效的方法
  8. IntelliJ IDEA搭建一个web项目含配置tomcat
  9. python规模_python语言计算生态规模有多大?
  10. java array 元素的位置_java中的两种排序工具Arrays和Collections的使用