指针 1.为什么要有指针的存在? 利用地址,找到所需的变量单元,而这个地址保存在了一个变量中,指针的存在是为了便于寻址。 2.指针的大小 在64位平台是8个字节,在32位平台是4个字节。 3.指针和整数的加减 比如说
#include<stdio.h>
int main()
{
int n=10;
int *pc=&n;
printf("%p",pc+1);
这里指针pc+1,这个1并不是字节的大小,取决于指针类型的大小。 所以,二级指针及其以上的+1都是+4。 补充: 这里有一个大端和小端的概念。 数据权值从低到高,地址从小到大,就是小端。否则就是大端。 4.指针和指针的加减 两个指针(指向同一数组或字符串)相减,代表两个指针之间的元素个数,这个个数由指针类型决定。 指针和数组没有任何关系 规定:允许数组元素的指针与指向数组后面的那个内存位置的指针比较,但是不可以与第一个元素之前的指针进行比较。 int arr[]; int*p=arr; p+i计算的的arr下标为i的地址。 5.指针数组 到底是指针还是数组,由操作符的优先级决定。
结构体 1.初始化和定义
struct Point
{
int x;
int y;
}p1;//声明p1
struct Point p2;//定义p2
结构体初始化的特点和数组的初始化几乎严格一致。 2.结构体的访问 使用( . )访问或者定义一个指针指向结构体然后使用指针来访问 例如:struct Stu*=&s; 3.结构体传参时要传地址。