指针(在c语言中就是内存单元格的地址)
每个内存单元格的大小为1字节
指针变量:用来存放地址的变量
内存:计算机中的程序运行都是在内存中进行
————————————————————————————————————
取地址运算符(&)和取值运算符(*)
如果需要获取某个变量的地址,可以使用取地址运算符(&)
char *pa=&a;
如果需要访问指针变量指向的数据。,可以使用取值运算符(*)
printf("%c,%d\n" ,*pa,*pb);
————————————————————————————————————
指针里存放的是地址,地址都是4个字节
系统:
32位——2^32种可能——8位为一个字节
sizeof(pa)=4
———————————————————————————————————————————
避免访问未初始化的指针(野指针)
int main()
{
int *a; ——>未给a指针初始化!
*a=123;
return 0;
}
———————————————————————————————————————————
指针和数组
bit(比特)
byte(字节)
kb
mb
gb
(1byte=8bit,其余都为1024进制)
—————————————————————————————————————————
指针的类型
int a=0x11223344; //44 33 22 11
int* pa = &a; // int -->4个字节
*pa = 0; //00 00 00 00
char*pa;
*pa=0; // 00 33 22 11
指针类型决定了:指针应用的权限有多大。比如整型为4个字节,则整型指针变量可改变4个字节的内存。
指针对应的类型,
指针
总结:
1、指针变量的作用:存放别人的地址。——>指针就是地址
2、指针变量是有类型的,类型是跟着别人的类型来定义的
3、指针除了存放别人的地址,还可以通过解引用符来找到变量本身,并对其操作
4、指针的大小取决于地址的存储需要多大空间
int main()
{
int a = 10;
int* pa = &a;//在c语言中,用来存放地址的变量,叫做指针变量
//“*”说明pa是指针变量
//int说明pa指向的对象类型为int类型
char ch = 'w';
char* pc = &ch;
printf("%p\n", &a);
printf("%p\n",pa);
printf("%d\n", sizeof(char*));
printf("%d\n", sizeof(int*));
printf("%d\n", sizeof(double*));
printf("%d\n", sizeof(float*));
printf("%d\n", sizeof(long*));
//a=20;
//*pa=20;//*解引用操作符,作用:通过指针变量找到原来的值
return 0;
}
———————————————————————————————————————————
野指针(指向的位置是不可知的情况(随机,不正确的))
1、指针未初始化
2、
结构体(1、使c语言有能力描述复杂的类型 2、可以让c语言创建新的类型)
结构:是一些值的集合,这些值称为成员变量。
集合:数组(同类型)
结构体:每个成员的类型都可以不一样
定义的标准格式:
访问的两种的形式:
1、当我们直接使用结构体变量名进行访问的时候
“a.age”,“a.sc”
2、当使用变量地址 / 指针进行访问的时候
struct stu * pa=&a;
(*pa).age,pa->age;
结构体传参