通俗易懂C语言--指针与数组(第二小节)

知识补充

在学习指针和数组之前,先了解一个概念,int/short/long/char在机器中占用了几个字节,Windows系统中,int占用4个字节,short占用2个字节,char占用1个字节,这几个在Linux系统中占用的字节是一样的,不过对于long来说,windows系统中占用4个字节,linux系统64位会占用8个字节,而long long都是一样的,也占用8个字节,所以对于8字节来说,统一用long long。

在进行UEFI代码编程的时候,通常只会出现UINTN/UINT8/CHAR16...等等定义,通过上述说明,就能理解这些定义的逻辑了

  typedef unsigned long long  UINT64;
  typedef long long           INT64;
  typedef unsigned int        UINT32;
  typedef int                 INT32;
  typedef unsigned short      UINT16;
  typedef unsigned short      CHAR16;
  typedef short               INT16;
  typedef unsigned char       BOOLEAN;
  typedef unsigned char       UINT8;
  typedef char                CHAR8;
  typedef signed char         INT8;

指针与整型数组

先看一段代码:

int main() {
	 int *p;
	 int num[2] = {1, 3};
	 p=&num[0];
     printf("%d\n", *p);
    return 0;    
}

通过之前的阐述,很好理解,*p=1,另外赋值也不能写成p=&1,当p=&num[0]的时候,这个指针其实就已经和数组关联起来了,计算一下下面几个值等于多少;

p=&num[0];
*p+1=
*(p+1)=
p[0]=

第一个,*p+1什么意思,就是*p和1相加,*p=1,理所当然,*p+1=2;*(p+1)呢,其实是p这个地址加1,假如p=1024,那么p+1=1025吗?错,p+1=1028,因为int占用4个字节,加1是加一个单位,在原地址的基础上需要加4,正好,整型数组元素1的地址规定了是1024,那元素3的地址是多少呢?1028,显然,*(p+1)=3,最后一个p[0]呢,*p=p[0];*(p+1)=p[1];所以,p[0]=1,理解了这些,接下来就可以进行深入理解指针与字符数组了。

指针与字符数组

#include <stdio.h>

int main() {
	char name[] = "hello anthony";
	char *old = "how old are you";
	char number[15];
	 printf("%c\n", name[1]);
     printf("%c\n", old[0]);
    return 0;    
}

同样的,如上的代码,定义两种不同表达的字符串,第一个字符数组,第二个,字符指针,初始赋值把一个字符串赋给了这个指针,按照之前说明的,很容易能知道输出的值是什么,分别是e和h,那为什么其中还定义了一个字符数组number,但是没用呢,其实我们还可以定义一个指针比如:char *p=number;然后把"how old are you"放进去,当然也可以直接使用number这个字符数组,这几种情况在平时用就差不多了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
面向对象是一种编程思想和方法,它把现实世界中的事物抽象成程序中的对象。我们可以将对象想象成真实世界中的物体,比如人、动物、汽车等等。每个对象都有自己的属性和行为。 属性是对象的特征,用来描述对象的状态。比如,一个人有姓名、年龄、性别等属性,一辆汽车有品牌、颜色、价格等属性。 行为是对象能够做的事情,表达对象的功能。比如,一个人可以吃饭、睡觉、跑步等行为,一辆汽车可以加速、刹车、转弯等行为。 面向对象编程将问题分解成多个对象,通过对象之间的交互来解决问题。对象可以通过封装、继承和多态这样的特性来组织和管理。 封装是指把对象的属性和行为封装在一起,对外部隐藏对象的内部实现细节,只暴露出一些公共的方法供外界使用。这样可以保护对象的数据安全。 继承是一种创建新的对象的方式,通过继承可以让一个对象获得另一个对象的属性和行为。父类中定义的属性和方法可以在子类中重复使用,减少代码的重复编写。 多态是同一个行为具有不同的表现形式,可以让一个方法在不同的对象上有不同的表现。通过多态可以提高代码的灵活性和可扩展性,增加程序的可维护性。 面向对象编程有助于提高开发效率,使代码结构更清晰,易于理解和维护。通过分解问题成多个对象,每个对象只关注自己的功能,降低了代码的复杂性。同时,面向对象编程还能够提高代码的重用性,减少代码量,加快开发速度。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值