1、内存指针就是地址
雨湖ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为成都创新互联公司的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:18982081108(备注:SSL证书合作)期待与您的合作!
- (1)内存是电脑上特别重要的存储器,计算机中程序的运行都是在内存中进行的 。
- (2)为了有效的使用内存,就把内存划分成一个个小的内存单元,每个内存单元的大小是1个字节。
- (3)为了能够有效的访问到内存的每个单元,就给内存单元进行了编号,这些编号被称为该内存单元的地址。
2、指针变量 (1)取出变量地址
- 用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字节。
#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)指针变量的大小2、结构体指针变量的大小取决于计算机是32位(x86)还是64位(x64)操作系统,与变量类型无关
语法: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元起,快前往官网查看详情吧