《C专家编程》学习记录——指针和数组相同的地方

一、在普通的表达式中

  先看一段简单的代码

char a[8];

a[3]=9;
3[a]=2;
printf("a[3] = %d\r\n", a[3]);
printf("3[a] = %d\r\n", 3[a]);

结果是:

a[3] = 2
3[a] = 2

原因:表达式中的数组名被编译器当做一个指向该数组第一个元素的指针(ANSI C标准),即在表达式中,指针和数组是可以互换的,因为他们在编译器里的最终形式都是指针,并且都可以进行取下标操作。就像加法一样,取下标操作符的操作数是可以交换的,所以表达式使用中,a[3]和3[a]两种形式都是正确的。(只为理解表达式中数组被编译器当做指向数组第一个元素的指针,实际不用)

原文地址:https://www.cnblogs.com/keepdoing123/p/12160730.html

时间: 2024-11-02 06:56:15

《C专家编程》学习记录——指针和数组相同的地方的相关文章

Windows API 编程学习记录<二>

恩,开始写Windows API编程第二节吧. 上次介绍了几个关于Windows API编程最基本的概念,但是如果只是看这些概念,估计还是对Windows API不是很了解.这节我们就使用Windows API 让大家来了解下Windows API的用法. 第一个介绍的Windows API 当然是最经典的MessageBox,这个API 的作用就是在电脑上显示一个对话框,我们先来看看这个API的定义吧: int WINAPI MessageBox(HWND hWnd, LPCTSTR lpTe

Windows API 编程学习记录<三>

恩,开始写API编程的第三节,其实马上要考试了,但是不把这节写完,心里总感觉不舒服啊.写完赶紧去复习啊       在前两节中,我们介绍了Windows API 编程的一些基本概念和一个最基本API函数 MessageBox的使用,在这节中,我们就来正式编写一个Windows的窗口程序. 在具体编写代码之前,我们必须先要了解一下API 编写窗口程序具体的三个基本步骤:             1. 注册窗口类:             2.创建窗口:             3.显示窗口: 恩,

C专家编程学习 1

1.C语言的基本数据类型直接与底层硬件相对应. 2#define 是可能出现问题 1 2 3 4 5 #define a(y) a_ex(y) a(x)被扩展为 a_ex(x) #define a (y) a_ex(y) a(x)被扩展为 (y) a_ex(y)(x) #define宏的用法 1.简单宏定义 1 #define a y 将文件中的 a 全部换成 y 为了避免出现问题,要将宏展开,根据运算符的优先级判断是否是需要的运算顺序. 2.带参数的宏定义 1 2 #define a(y) a

编程题:指针输出数组的灵活性。功能:输出数组中全部元素

#include<stdio.h> void main() { int *p,i; int a[5]={1,2,3,4,5}; p=a; printf("\n"); for(;p<a+5;p++) printf("%d\t",*p); } 编程题:指针输出数组的灵活性.功能:输出数组中全部元素,布布扣,bubuko.com

C语言学习笔记--指针和数组的关系

1.数组的本质 (1)数组是一段连续的内存空间 (2)数组的空间大小:sizeof(array_type)*array_size; (3)数组名可看做指向数组第一个元素的常量指针 (4)数组声明时编译器自动分配一片连续的内存空间 ,而指针声明时只分配了用于容纳地址值的 4 字节空间 2.指针的运算 (1)指针是一种特殊的变量,与整数的运算规则为: p + n == (unsigned int)p + n * sizeof(*p); 当指针 p 指向一个同类型的数组的元素时,p+1 指向当前元素的

并发编程学习记录

重要知识点 现代系统基本的构造并发程序的方法 进程:用这个方法,每个逻辑流都是一个进程,由内核来调度和维护.因为进程有独立的虚拟地址空间,想要和其他流通信,控制流必须使用某种显式的进程间通信机制. I/O多路复用:在这种形式的并发编程中,应用程序在一个进程的上下文中显示地调度它们自己的逻辑流.逻辑流被模型化为状态机,数据到达文件描述符后,主程序显示地从一个状态转化到另一个状态.因为程序是一个单独的进程,所以所用流共享同一个地址空间. 线程:线程是运行在一个单一进程上下文中的逻辑流,由内核进行调度

[ASP.NET MVC4高级编程] 学习记录(一)

理论: 先有GUI在发展,当用户按下某个键,某个进程会监听到这个动作,这个进程就是控制器.这就是MVC模式. 后来有了事件驱动编程,响应动作的是按钮本身,而不是控制器. 再后来webForm中,事件驱动需要通过隐藏域保存页面的状态.看起来提交一次没有变化,实际上经历了保存状态.销毁页面.服务端处理.恢复页面几个过程,究其本质,是因为web是无状态的. 最后的MVC,由用户提交一个请求,控制器选择相应视图,操纵模型,然后反馈给用户 控制器把视图渲染成html或其他,再由浏览器解释html.浏览器无

编程学习记录4:OOP的一些基础概念

面向对象编程(OOP, Object Oritented Programing) OOP的一些相关单词 单词 说明 class 类.种类 public 公有的 private 私有的 object 对象.物体 encapsulation 封装.包装 attribute 属性.特征 method 方法 member 成员 constructor 构造方法.构造器 OOP的一些相关概念 1.类:具有相同属性和行为的一组对象的集合(学生). 2.对象:具有明确定义状态和行为的实体(学生张三). 3.属

python核心编程学习记录之错误与异常