1.指针是什么?
2.指针和指针类型
3.野指针
4.指针运算
5.指针和数组
6.二级指针
7.指针数组
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1.指针是编程语言中的一个对象,利用地址,他的值直接指向存在电脑存储器中的另一个地方的值,
地址形象的成为指针。
编号 - 地址 - 指针
2.指针和指针类型:int*p,char*p,指针类型不同,他们所占的地址空间大小不同,但是在
X86上,一个地址所占4个字节,在X64上,一个地址所占8个字节
指针类型的大小决定了:指针解引用的权限有多大, 指针向前或者向后走一步有多长
#define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> int main() { //指针类型的意义 // 指针解引用的权限有多大 int arr[10] = { 1,2,3,4,5,6,7,8,9,10 }; int* p = arr;//数组名表示数组首字母 char* pc = arr; printf("%p\n", p); //000000991F2FF938 printf("%p\n", pc); //000000991F2FF938 printf("%p\n", p + 1); //000000991F2FF94C printf("%p\n", pc + 1); //000000991F2FF939 int arr[10] = { 0 }; int* p = arr; for (int i = 0; i < 10; i++) { *(p + i) = 1; // 11111111111 } return 0; }
3.野指针
野指针的产生:指针没有初始化,指针越界访问,指针是否有效,指针空间释放
注意:指针初始化:int *p = NULL;这样的指针也不能用
4.指针的运算:
4.1指针的加减运算:
#define KING 5 int main() { //1.指针的加减整数运算 float values[KING]; float* vp; for (vp = &values[0]; vp < &values[KING];) { *vp++=0; } printf("%.1f\n", values[1]); // 结果全是0; return 0; }
4.2 指针 - 指针
指针 - 指针得到的是两个指针之间元素的个数,但是要保证指针同类型,指针指的是同一块空间
//指针 - 指针 int arr[10] = { 1,2,3,4,5,6,7,8,9,10 }; int* p = arr; printf("%d\n", arr[9]-arr[0]); // 9 return 0;
标签:10,arr,初阶,int,vp,001,printf,指针 From: https://www.cnblogs.com/kingxyg/p/16827476.html