初识C语言(4)-创新互联

1、指针

指针就是地址

雨湖ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为成都创新互联公司的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:18982081108(备注:SSL证书合作)期待与您的合作!
1、内存
  • (1)内存是电脑上特别重要的存储器,计算机中程序的运行都是在内存中进行的 。
  • (2)为了有效的使用内存,就把内存划分成一个个小的内存单元,每个内存单元的大小是1个字节。
  • (3)为了能够有效的访问到内存的每个单元,就给内存单元进行了编号,这些编号被称为该内存单元的地址。

在这里插入图片描述

  • 用32位系统举列:若有32根地址线,则会产生2^32个地址。一个地址对应一个内存单元。
  • 在32位操作系统上,一个地址占4个字节的空间。
    00000000 00000000 00000000 00000000
    00000000 00000000 00000000 00000001
    00000000 00000000 00000000 00000010

    11111111 11111111 11111111 11111111
    【32位系统中一个地址占32个 bit 位,即 4 字节】
  • 注:一个门牌号(地址)对应1个房间(内存单元),一个房间(内存单元)的大小为1字节,但是门牌号(地址)的大小为4字节。
2、指针变量 (1)取出变量地址
#includeint main()
{int num = 10; //整型占4字节(4个内存单元)
   # //取出num的地址
   //注:这里num的4个字节,每个字节(内存单元)都有地址,取出的是第一个字节的地址(较小的地址)
   
   printf("%p\n", &num); //打印地址,%p是以地址的形式打印
   return 0;
}

在这里插入图片描述

(2)定义指针变量
int num = 10;
int *p; // p是一个变量,int * 是定义p为一个整型指针变量
p = # // p是变量,变量里存的是指针(地址)
指针使用实例:
#includeint main()
{int num = 10;
    int *p = # //p为一个整型指针变量
    *p = 20; //解引用
    printf("%d\n", num); // 20
    
    return 0;
}

在这里插入图片描述

推广到其他类型:
#includeint main()
{char ch = 'w';
    char* pc = &ch;
    *pc = 'q';
    printf("%c\n", ch); // q
    
    return 0;
}
(3)指针变量的大小

指针变量的大小取决于计算机是32位(x86)还是64位(x64)操作系统,与变量类型无关

在这里插入图片描述

2、结构体

语法:struct 结构体名 { 成员列表 }

#includestruct Book // 定义结构体 Book
{char name[20];
	int price;
};

void Print(struct Book* ps)
{//printf("书名:《%s》 定价:%d 元\n", (*ps).name, (*ps).price);
	printf("书名:《%s》 定价:%d 元\n", ps->name, ps->price);
}

int main()
{struct Book b1 = {"C语言", 55}; // 结构体的初始化
	struct Book b2 = {"C++", 66 }; // 结构体的初始化
	
	printf("书名:《%s》 定价:%d 元\n", b1.name, b1.price);
	Print(&b2);

	return 0;
}

结构成员访问操作符:

  • 结构体变量 . 结构体成员名
  • 结构体指针变量 . 结构体成员
  • 结构体指针变量 ->结构体成员

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


当前名称:初识C语言(4)-创新互联
网站网址:http://scyanting.com/article/ccpees.html