指针操作与指针变量相关-指针变量就是存放地址的变量。指针变量的引用主要涉及到两个方面:
(1)对指针变量本身的引用,就是说对指针变量进行的各种运算
(2)对指针变量所指向的目标,对指针进行引用。
通俗的说上述两种情况,一种是对地址的运算,一种是对地址所指向的变量进行间接引用。
跟指针相关的操作符主要有3个:&、*、[]
(1)&:取地址运算符,
(2)*:指针运算符—–取指针所指向的运算符。即:取指针变量(地址)所指向的变量值。
(3)[]:下标操作符—–取指针所指向的操作符。即:取指针变量(地址)所指向的变量值,一般在数组运算中使用的比较多。
指针有6种基本操作,这些操作运行,一般在数组遍历时候才有意义,基于数组在内存中显现排列方式。
接下来举例说明:
void main(){
//数组在内存中是连续存储的
int arr[] = {67,10,1,23,50,89,44};
//数组变量名:arr 就是这个数组的首地址
printf("%#x\n",arr);//首地址
printf("%#x\n",&arr);//首地址
printf("%#x\n",&arr[0]);//首地址
//上面3条输出结果是一致
//指针变量
int *p = arr;
printf("%d\n",*p);//p值= arr[0]
printf("%#x\n",p);//指向数组的首地址
//指针加法
p++;//p++ 向前移动sizeof(数据类型)字节,这里为int移动4个字节
int *p1;
p1 = p +4;
printf("%#x\n",p);
printf("%d\n",*p);
printf("%d\n",*p1);
//指针减法
p--;
printf("%#x\n",p);
printf("%d\n",*p);
getchar();
}
1.赋值 ,通常可以是使用数组名或者地址运算符&进行地址赋值,int *p = arr;
2.取值 , 运算符 * 可以取出指针所指向到地址中存储到数值 printf(“%d\n”,*p);
3. 取地址值,指针变量同其他变量一样也具有地址和数值,使用&运算符可以得到指针本身的地址 printf(“%#x\n”,&arr);
4. 整数加给指针 , + 运算符可以将一个整数加给指针,或者把一个指针加上一个整数,两种情况下整数都会和指针所指到内型到字节数相乘,然后把得到的结果加在初始地址上
5.增加指针到值 :可以通过一般到加法或增量运算符俄增加一个指针的值,进行操作后指针将指向该数组的下一个元素,代码中p++ 即使指针从第一个元素指向第二个元素
6.指针减法,同加法运算类似
实例:通过指针给数组赋值
void main(){
int arr[5];
int *p = arr;
int i =0;
for(;p<arr+5;p++){
*p = i;
i++;
}
getchar();
}