指针与结构简介
1:指针
32位:—32根地址线—物理线—通电–产生1/0
将电信号转换成数字信号:1和0组成的二进制序列
Bit–Byte–Kb–MB–GB–TB–PB
内存单元:2*32次方个内存单元
bit / 8=Byte,Byte /1024 =Kb, MB / 1024 =MB, MB / 1024 = GB
char =1byte =8 bit =8 个地址
最终一个内存单元还是一个字节
#include <stdio.h>
int main()
{
int a = 10; //a在内存中要分配的空间 --4个字节
printf("%p\n",&a); //用来打印地址
int * pa = &a; //pa用来存放地址,在c语言中pa叫指针变量
//*说明是pa的指针变量
// int说明pa执行的对象是int类型
char ch = 'w';
char * pc = &ch;
return 0;
}
#include <stdio.h>
int main()
{
int a = 10;
int* pa = &a;
*pa = 20; //*解引用操作, *pa就是通过pa里边的地址,找到a
printf("%d\n",a); //结果为20
return 0;
}
指针的大小
#include <stdio.h>
int main()
{
printf("%d\n",sizeof(char*));
printf("%d\n",sizeof(short*));
printf("%d\n",sizeof(int*));
printf("%d\n",sizeof(long*));
printf("%d\n",sizeof(long long*));
printf("%d\n",sizeof(float*));
printf("%d\n",sizeof(double*));
return 0;
}
//对于32位平台,结果为4
//对于64位平台,结果为8
指针需要多大的空间,取决于地址的存储需要多大空间
2:结构体
结构体是C语言中特别重要的知识点,结构体使得C语言有能力描述复杂类型。
结构体可以让c语言创建新的类型出来
struct:结构体类型
#include <stdio.h>
struct Stu //创建一个学生
{
char name[20];
int age;
double score;
};
int main()
{
struct Stu s={"张三",20,85.5}; // 结构体的创建和初始化
printf("1: %s %d %lf\n",s.name,s.age,s.score); //结构体变量,成员变量,lf打印双精度浮点数
struct Stu * ps = &s; //存储变量
printf("2: %s %d %lf\n",(*ps).name,(*ps).age,(*ps).score); //解引用变量,使用变量进行引用
printf("3: %s %d %lf\n",ps->name,ps->age,ps->score); //使用变量,利用->操作符进行引用,左边为结构体指针->成员变量名
return 0;
}