LinuxC——指针

指针在C语言中的应用是非常多的,而且也是很重要的。

一、什么是指针

指针是一个值为内存地址的变量。就像char类型变量的值为字符,int类型变量的值为整数。

在使用指针的时候,一定会用到这两个符号‘*’和 ‘&’,下面就首先介绍这两个运算符

间接运算符*

这个运算符也被称为解引用运算符,我们通过间接运算符找出存储在指针指向的某个内存中的值。

我们用一个例子来说明

ptr = &bah;
var = *ptr;

假设ptr是一个已经声明好的指针,我们把bah的地址赋给ptr,然后通过间接运算符来取出ptr指向的内存中的值,并且把这个值赋给var。

上面这两条语句和起来就相当于

var = bah;

当*后面跟一个指针名或地址时,*给出存储在指针指向地址上的值

址运算符&

如果希望得到一个变量的地址,就需要用到取址运算符。

&nures 表示nures的地址。

二、声明指针

声明指针的时候必须要指定指针指向的变量的类型,因为不同的变量类型占用不同的存储空间,一些指针操作需要知道操作对象的大小。

接下来看一些声明指针的例子

int *pi;      //pi是指向int类型变量的指针
char *pc;     //pc是指向char类型变量的指针
float *pf;    //pf是指向float类型变量的指针

类型说明符表明了指针所指向对象的类型,‘*’表明声明的变量是一个指针。

三、指针的应用

这里通过一个例子来说明

#include <stdio.h>

int main()
{
	int a = 10;
	int *pi = &a;

	printf("before change a = %d\n", a);

	*pi += 10;

	printf("after change a = %d\n", a);

	return 0;
}

首先定义一个int类型的变量,并且给这个变量初始化。然后定义一个指向这个变量指针。

*pi += 10;就是将 *pi 加上10 再赋值给 *pi, 这里的操作同样是对a进行的操作。因为 pi是指向a这个变量的,pi中存放的就是a的地址,a的值是10,所以对pi进行操作就是对a进行的操作。

打印出改变之前和改变之后的值,看看其结果。


本篇博客只是简单的介绍了一下指针,与指针有关的详细应用会在以后写出来的。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
第1篇 Linux下C语言基础 第1章 Linux简介 1.1 GNU简介 1.2 Linux简介 1.2.1 Linux发展史 1.2.2 Linux发行版 1.2.3 Linux内核版本 1.2.4 Linux与UNIX的关系 1.2.5 Linux在服务器方面的发展 1.2.6 Linux在嵌入式系统方面的发展 1.2.7 Linux在桌面系统方面的发展 1.3 Linux环境下的其他编程语言 1.3.1 C++ 1.3.2 Java 1.3.3 Perl 1.3.4 Python 1.3.5 Ruby 1.3.6 PHP 第2章 控制结构 2.1 goto语句 2.1.1 C语言中的无条件跳转 2.1.2 使用goto语句进行出错处理 2.1.3 出错处理的一般模型 2.2 C语言中的分支结构 2.2.1 分支结构的翻译 2.2.2 使用goto语句实现分支结构 2.3 短路计算 2.3.1 短路计算 2.3.2 &&运算的短路计算 2.3.3 ||运算的短路计算 2.4 C语言中的循环结构 2.4.1 while循环 2.4.2 do…while循环 2.4.3 for循环 2.5 switch语句 2.5.1 switch语句的应用 2.5.2 使用goto语句实现switch语句 2.6 优化控制结构 2.6.1 表达式优化——使用替换程序中的乘除法 2.6.2  表达式优化——常量折叠 2.6.3 表达式优化——使用数学公式 2.6.4 表达式优化——存储问题 2.6.5 分支优化——改变判断顺序 2.6.6 分支优化——使用switch语句 2.6.7 循环优化——一次性计算 第3章 C语言中的函数 3.1 函数的本质 3.2 变量的作用域和生命期 3.2.1 全局变量 3.2.2 局部变量 3.3 变量的初始值 3.3.1 全局变量的初始值 3.3.2 局部变量的初始值 3.4 与函数有关的优化 3.4.1 函数调用与程序优化 3.4.2 变量存储优化 3.5 编写多文件程序——变量的存储类别 3.5.1 存储类别 3.5.2 static变量的作用——改变变量的生命期 3.5.3 static变量的作用——实现封装和模块化设计 3.6 编写多文件的程序——链接的作用 3.6.1 链接多个文件 3.6.2 链接时符号解析规则 3.6.3 链接规则的应用 3.7 可变参数 3.7.1 可变参数的概念 3.7.2 实现一个简单的可变参数的函数 3.7.3 可变参数实例 3.7.4 关于printf函数的疑问——缺少整型参数 3.7.5 关于printf函数的疑问——缺少字符串地址参数 第4章 C语言中的指针字符串 4.1 sizeof运算符 4.1.1 sizeof运算符的应用——得到内置类型的大小 4.1.2 sizeof运算符的应用——得到复合类型的大小 4.2 指针的应用 4.2.1 指针与别名陷阱 4.2.2 数组的指针 4.2.3 指针指针 4.2.4 指针与参数传递 4.2.5 指针类型的意义 4.2.6 void*型指针 4.3 函数的指针 4.3.1 C语言中的函数指针 4.3.2 函数指针的应用——回调函数 4.3.3 函数指针数组 4.4 字符串 4.4.1 字符串与字符数组 4.4.2 字符串指针 4.4.3 限定修饰符const 4.4.4 const关键字修饰指针——在指针定义之前 4.4.5 const关键字修饰指针——在指针定义之中 4.4.6 const关键字修饰指针——在指针定义之前和定义之中 4.4.7 使用const关键字的意义 第5章 C语言的高级技术 第2篇 C语言开发环境 第6章 vi与vim编辑器 第7章 gcc编译器 第8章 makefile 第9章 gdb 第3篇 Linux进程操作 第10章 进程环境 第11章 进程控制 第12章 时间和日历历程 第13章 信号及信号处理 第14章 进程间通信 第15章 线程 第4篇 Linux文件操作 第17章 文件I/O 第18章 文件管理 第19章 目录操作 第20章 特殊文件 第21章 基于流的I/O 第5篇 Linux网络编程 第22章 TCP和UDP协议 第23章 网络编程基础 第24章 网络编程进阶 第25章 网络编程实例——实现文件传输程序 第26章 网络编程实例——简单的Web服务器 第6篇 shell脚本知识 第27章 shell脚本基础 第28章 shell脚本中的控制结构 844

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值