指针
内存:电脑上特别重要的存储器,计算机中所有程序的运行都是在内存中进行的 。 4g/8g/16g
电脑如何使用这些内存:
划分内存单元 -编号(地址)指定
1.编号(地址)怎么产生?
32位:32根地址线
电信号转换为数字信号1/0
000000000000000000000000–内存单元1
000000000000000000000001–内存单元2
000000000000000000000010–内存单元3
…
011111111111111111111111111–内存单元n
100000000000000000000000–内存单元n
…
111111111111111111111111111–内存单元2^32
64位:
2.一个内存单元应该是多大的空间?1byte
所以为了有效的使用内存,就把内存划分成一个个小的内存单元,每个内存单元的大小是1个字节。 为了能够有效的访问到内存的每个单元,就给内存单元进行了编号,这些编号被称为该内存单元的地 址。
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
//%s
//%c
//%d
//%p 打印地址
//& 取地址操作符
//int main()
//{
// int a = 10;//向内存申请4byte空间,存放10
// //sizeof(int) = 4
// //printf("%p\n", &a);//输出四个字节的第一个地址
//
// int* pa = &a;
// // pa是一个存放地址的变量,这样的变量被称为指针变量
// //指针即地址,地址即指针
//
// *pa = 20 ; //* ---解引用操作符,可修改原始变量, *pa是pa指向的对象 -a
// printf("%d\n", a);//20
//
// //char ch = 'w';
// //char* pc = &ch;
//
// return 0;
//}
//指针变量的大小
//#include <stdio.h>
//int main()
//{
// printf("%d\n", sizeof(char*));//4
// printf("%d\n", sizeof(short*));//4
// printf("%d\n", sizeof(int*));//4
// printf("%d\n", sizeof(long*));//4
// printf("%d\n", sizeof(float*));//4
// printf("%d\n", sizeof(double*));//4
//
// return 0;
//}
//结论:指针大小在32位平台是4个字节,64位平台是8个字节。
结构体
用来描述复杂对象,比如描述学生,学生包含: 名字+年龄+性别+学号 这几项信息。
//声明一个学生类型
struct Student
{
//成员变量
char name[20];//名字
int age; //年龄
char sex[5]; //性别
char id[15]; //学号
};
struct Book
{
//成员变量
char name[20];
int price;
char author[20];
};
int main()
{
// 创建的结构体变量
struct Student s1 = {"zsan",20,"nan","2025313"};
struct Student s2 = {"lisi",22,"nv ","9849154"};
struct Book b1 = { "C",55,"zhang" };
printf("名字:%s 年龄: %d 性别: %s 学号: %s\n",s1.name,s1.age,s1.sex,s1.id );
printf("%s %d %s\n", b1.name, b1.price, b1.author);
struct Book *pb = &b1;
printf("%s %d %s\n", (*pb).name, (*pb).price, (*pb).author); // 结构体变量.成员名
printf("%s %d %s\n", pb->name, pb->price, pb->author); // -> 结构体指针->成员名
return 0;
}