一、指针:
指针是一个变量,用来存放地址的变量.(存放在指针中的值都被当成地址处理)
指针的大小在32位平台是4个字节,在64位平台是8个字节
#include<stdio.h>
#include<stdlib.h>
int main(){
int a = 10; //在内存中开辟一段空间
int * p = &a; //我们对变量a取出它的地址,将a的地址存放在p变量中,p就是一个指针变量
system("pause");
return 0;
}
1、一级指针:
一级指针就是指指针,里面放的就是元素的地址,我们可以通过访问元素的地址来找到该地址里存放的内容,即元素本身。
2、二级指针
指针变量也是变量,是变量就有地址,二级指针就可以存放指针变量的地址。
例如:
#include<stdio.h>
#include<stdlib.h>
int main(){
int a = 10;
int *pa = &a; // a的地址存放在pa中, pa是一级指针
int **ppa = &pa; // pa的地址存放在ppa中 ppa是二级指针
system("pause");
return 0;
}
二、数组:
数组是一组相同类型元素的集合
创建实例:int arr1[ ]
初始化实例:int arr1={1,2,3}; char arr2={‘a’,‘b’,‘c’};
.其中[ ]中要给一个常量才可以,不能使用变量。
三、指针和数组
数组名是什么?
#include<stdio.h>
#include<stdlib.h>
int main(){
int arr[10] = {1,2,3,4,5,6,7,8,9,0};
printf("%p\n",arr);
printf("%p\n",&arr[0]);
system ("pause");
return 0;
}
可见数组名和数组首元素的地址是一样的,其实,数组名表示的就是数组首元素的地址。
那么这样也是对的:
int arr[]={1,2,3,4,5,6,7,8,9,0};
int *p=arr;
其中p存放的就是首元素的地址。
四、指针数组
指针数组其实是一个数组,是存放指针的数组
例如:int*arr[5];
arr是一个数组,里面有五个元素,每个元素都是一个整形指针