学C花絮:以前学C的时候,感觉指针这玩意很难控制,由于一开始就对指针心怀恐惧,所以后来没学好自在情理之中。可如今不一样,想做C开发,这是吃饭的家伙,不得不认真。当一个人要靠别人或者某种技能来生存的话,也许是很可悲的,这个目前无法改变。
先上点概念性的
指针:指
存储对象地址的变量
&运算符:用于
取对象的地址,简称地址运算符。它只能应用于内存中的对象,即变量/数组元数
*运算符:是间接引用或间接寻址的运算符。当它作用于指针时,将
访问指针所指向的对象
下面用简单的例子来说明是如何声明指针和如何使用运算符
* 和
& :
int x = 1, y = 2, z = 3, c[3] = {20,21,22}; /* c[0]的存储地址为0x0022ff30 */
int *p; /*声明指针p,它指向一个int型的变量 */
p = &x; /* 指针p指向x的存储地址,访问x对象,*p=1 */
p = &z; /* 指针p又指向z的存储地址,访问z对象,*p=3 */
y = *p; /* 将指针p最后所访问的对象z的值赋给y,*p=3,y=3 */
*p = 0; /* 将指针p最后所访问的对象z的值置0,*p=0,z=0 */
p = &c[0]; /* 指针p指向c[0]的存储地址,*p=20 */
printf("x=%d,y=%d,z=%d,c[0]=%d,*p=%d", x, y, z, c[0], *p);
/* Result:x=1,y=3,z=0,c[0]=20,*p=20 */
对于指针int *p=100,我的理解是:
p表示指向存储地址,而*p读取所指向地址的对象,即值100。请看下面的例子:
int c[3] = {20,21,22}; /* c[0]的存储地址为0x0022ff30 */
int *ip;
ip = &c[0]; /*指针ip指向c[0]的存储地址*/
printf("ip=0x%x\n", ip); /*取地址*/
printf("&ip[0]=0x%x ,&c[0]=0x%x\n", &ip[0], &c[0]); /*取地址*/
printf("&ip[1]=0x%x ,&c[0]=0x%x\n", &ip[1], &c[1]); /*取地址*/
printf("&ip[2]=0x%x ,&c[0]=0x%x\n", &ip[2], &c[2]); /*取地址*/
printf("*ip=%d\n", *ip); /*取对象的值*/
printf("&p=0x%x\n", &p);
/* Result:
p=0x22ff30
&p[0]=0x22ff30 ,&c[0]=0x22ff30
&p[1]=0x22ff34 ,&c[0]=0x22ff34
&p[2]=0x22ff38 ,&c[0]=0x22ff38
*p=20
&p=0x22ff2c
*/
分享到:
相关推荐
《C语言全集解体(指针之前)》是一份集合了C语言基础知识与实践的资源,主要涵盖了C语言的基础语法、程序设计方法以及部分算法实现。这份资料以作者的实际编程经验为基础,通过一系列的代码实例,帮助学习者深入理解...
### C语言基础从零开始初识语言多图超详解-超万字教程 #### 1. 什么是C语言 ##### 1.1 计算机与机器语言 计算机是一种能够执行预设指令集的电子设备,它能进行数值计算、逻辑运算,并具备存储功能。为了与计算机...
《从初识C语言到C语言进阶源码》是一个针对C语言学习者的全面资源包,旨在帮助初学者从基础入门逐步提升至高级编程技能。这个压缩包包含了一个名为"c-language-master"的项目目录,我们可以从这个目录结构中推测出一...
【初识C语言 - 复习】 C语言是一种强大的、结构化的编程语言,它以其高效、灵活和可移植性而闻名。本复习资料旨在帮助初学者巩固C语言的基础知识,以便更好地理解和应用这一编程工具。 一、C语言概述 C语言由...
第1章初识C语言带领读者对C语言有了一个初步的认识,包括了解程序的基本概念以及编写C程序所需要的条件。第2章从何处入手和开始,详细讲解了main()函数的结构,它是C程序运行的起点。之后,作者还介绍了数据类型,...
1. 初识C语言 C语言是由丹尼斯·里奇在贝尔实验室开发的一种编程语言,它以其简洁、高效和强大的功能著称。C语言提供了丰富的控制结构,使得程序员可以精细地控制程序的执行流程。 2. 数据类型 C语言有多种基本数据...
- **初识C程序** - **示例程序**: 输出“Hello, World!” ```c #include int main() { printf("Hello, World!\n"); return 0; } ``` - **程序结构解析**: - `#include <stdio.h>`: 包含标准输入输出...
C++是一种强大且广泛使用的编程语言,它是C语言的扩展,增加了面向对象编程的特性。本资料主要针对C++初学者,通过PPT的形式,深入浅出地介绍了C++的基础概念、语法结构以及实践应用。 一、C++基础 1. **变量与数据...
首先,"C语言编程宝典"可能是一本全面介绍C语言语法和编程实践的书籍,涵盖了变量、数据类型、运算符、控制结构、函数、数组、指针、结构体、文件操作等核心概念。通过阅读此书,读者可以掌握编写C程序的基础,并...
这份"C初阶课件"的压缩包包含了一系列关于C语言学习的PDF文档,覆盖了从入门到进阶的重要概念。 首先,"第1节-初识C语言.pdf"应该是介绍C语言的基本历史、特点以及它的应用领域。这节课可能会讲述C语言如何由Dennis...
* 初始化堆栈指针SP、初始化程序计数器指针PC、设置堆、栈的大小、设置异常向量表的入口地址、配置外部SRAM作为数据存储器、设置C库的分支入口__main(最终用来调用main函数)。 第六章:GPIO按键实验 * GPIO的8种...
《初识C语言游戏编程:游戏开发系列最佳入门书籍》是专为想要进入游戏开发领域的初学者准备的一本宝贵资源。这本书将引导读者通过C语言的学习,掌握游戏编程的基础知识和技能。 首先,C语言是游戏开发中的常用编程...
- **C语言采用面向过程的方法**:在C中,程序通常被分解为一系列的函数,每个函数负责一部分逻辑处理。这种方式对于较小的程序来说是有效的,但在处理大规模项目时会变得混乱且难以管理。 例如,在一个游戏中,如果...
本资料包含一系列关于C++的PPT,涵盖了从基础到进阶的关键概念,包括初识C++、简单程序设计、选择结构、循环结构、数组以及函数和递归等主题。以下是对这些主题的详细解读: 1. **初识C++语言**: - **历史背景**...
《C语言初识:c_premierpas》 在编程世界中,C语言是一门基础且重要的编程语言,尤其对于理解计算机底层工作原理和技术体系有着不可替代的作用。"c_premierpas"这个项目,正如其名,是针对C语言初学者的一个入门...
4. **C语言编程**:51单片机的C语言编程是学习的重点,包括基本语法、数据类型、控制结构、函数、指针等,以及针对单片机的特定编程技巧,如位操作和内存管理。 5. **单片机应用**:涵盖各种实际应用案例,如模拟...
本书会介绍C语言的基本语法,包括变量、数据类型、控制结构(如if语句和循环)、函数、指针以及内存管理。同时,书中也会涉及如何利用头文件和库函数来访问Linux系统调用,实现与操作系统的直接交互,如文件操作、...
汇编中的指针概念与C语言中的指针相似,都是对内存地址的直接操作。通过对汇编的掌握,可以更好地理解C语言中的形参、实参、函数调用、全局变量和局部变量等抽象概念,从而提升编程能力。 总的来说,虽然汇编语言在...