//指针数组---数组每个元素都是指针,共同构成一个数组
1. 一个指针变量p 指向数组中的一个元素 p+1 相当于 指向该元素的下一个元素. p-1 相当于 指向该元素的上一个元素
2. printf(" %ld ",p2>p1);表示的含义是 两个指针 指向元素 在数组中 是高位还是地位
3. p2 - p1 相当于 其指向元素之间下标的差 . 也就是相当于 这两个指针指向的元素之间相差几个元素 .
4. char *p2 ="dadasdasdasd";定义了一个字符串指针 保存的是 "dadasdasdasd" 的 首地址
5. 通过指针变量在内存中保存字符串 不能再通过指针去修改对应字符串的值 因为 字符串放在只读区.(字符串数组可以修改)
6. 单独定一个指针变量 不能直接接受从键盘输入的字符串
7. int * names[5] = {&a,&b,&c,&d,&e};
定义了 一个 一维的 指针数组 数组名 names 长度 5 数组的第一个元素存的是 变量a的地址
**names-->a的值,通过数组名 来获取对应元素中的数据 -- (这个数据是地址 ) 再通过这个数据 访问对应内存单元中的数据
8. (*--->从地址找到内存空间存储的数据 &--->找到到内存空间数据的地址) * 和 & 是相反的两个操作
9. 数组 Books中存放的是 这些字符串的 首地址 char * books[5] = {"feme","boook2","boooooook3","bok4","bk5"};
10. const int *p;将指针变量p1 用const关键修饰 不能通过指针变量修改其指向变量的值 ,但是可以改变指针指向(即指向的数据)
int * const p; p可以改变值,不能改变指向. const int * const p; 指向和值都不能改变
11. calloc 在(堆区)中分配一片连续的内存空间 如果在堆区中找到这么连续的一片内存空间 则返回 这边内存空间的首地址 否则返回NULL...想在堆区中开辟一片连续内存空间 用来存放 50个整数 int *p = (int *) calloc(50, sizeof(int));
//函数指针 函数也是有地址的 这个地址存放在函数名字里面 . 用一个 指针 把函数的地址存起来 这种指针就叫做 函数指针
//数组指针同理
//定义函数指针
1.拷贝 对应函数 { 前面的东西 --函数头部
2.放在指定的位置
3.修改函数的名字 --- > (*变量名 )
12. 结构体变量指针 作为函数的实际参数 地址传递
}
|
|