指针
指针的定义:
指针是一个变量,存放内存单元的地址(编号)
指针类型的意义:
1.指针类型决定了指针进行解引用操作的时候能够访问空间的大小(字节)
int* p,*P能够访问 4 个字节
char* p,*p能够访问 1 个字节
double* p,*p能够访问 8 个字节
2指针的类型决定了指针每走一步是多远(指针的步长)
int* p: p + 1 => 4
char* p : p + 1 => 1
double* p : p + 1 =>
#include<stdio.h>
int main()
{
int a[] = {2,3};
int* p = a;
char* p1 = (char *)a;//(强制类型转化)将a的int类型强制转化为char
printf("*p=%d\n", *p);
printf("*(p+1)=%d\n", *(p + 1));
printf("*p1=%d\n", *p1);
printf("*(p1+1)=%d\n", *(p1+1));
printf("%d\n", sizeof(p));//计算的是指针p的大小,
//只与计算机所使用的操作系统有关(32位小为4,64位下为8)
return 0;
}
指针的运算
1.指针+-整数
2.指针-指针;(计算字符串的长度)得到中间元素得个数 大地址-小地址(必须是同一块空间。
3.指针关系运算
4.指针与数组
二级指针及三级四级指针
int mian()
{
int a = 10;
int* pa = &a;
int** ppa = &pa;
int*** pppa = &ppa;
return 0;
}
*p=>一级指针
**ppa=>二级指针
数组指针
指向数组的指针-存放数组的地址-指针
{
int arr[10] = { 1,2,3,4,5,6,7,8,9,0 };
int(*p)[10] = &arr;
//p先和*结合,说明p是一个指针变量,让后指针指向的是一个大小为
//10个整形的数组
}
指针数组
1.定义:是数组,用来存放指针的。
2.
{
int arr[10] = { 0 };//整形数组
char ch[5] = { 0 };//字符数组
int* parr[4];//存放整形指针的数组-指针数组
//eg
int arr1[] = { 1,2,3,4,5 };
int arr2[] = { 2,4,5,6,7 };
int* parr[] = { arr1,arr2 };
}
//int p=arr;
//p[i]==(p+i)==*(arr+i)==arr[i];**
字符指针
char ch='w'; const char* p2='abcdef';
char* p=&ch;