前言
最近自己慢慢的发现,自己的记忆力慢慢的跟不上了,所以自己一边学习,一边写博客,自己写博客的真正原因,是因为害怕那一天忘记了技术知识而做的笔记,而另外的两个方面是巩固自己的自己的技术知识和帮助还在编程中找不到解决方法的爱好者,而另一个方面则为了提升自己的表达能力和写作的能力,如果自己的的文章能够帮助到有需要的困惑者,那自己也是很高兴的。
(1)什么是指针?
指针是一个变量,其值为另一个变量的地址,而指针变量是内存位置的直接地址。
(2)指针在C编程中有什么优势?
1.可以简化一些C编程任务的执行
2.动态内存分配
(3)指针如何声明和使用?
#include <stdio.h>
int main(){
/*
指针的声明类型:
int *ip; 整形指针
double *dp; double类型指针
float *fp; 浮点类型指针
char *ch; 字符类型指针
*/
int values = 20; //变量声明
int *ip; //指针变量声明
ip = &values; //指针变量存储var地址
printf("var:%p\n\n",&values);//变量值
printf("ip:%p\n\n",ip); //指针变量的存储地址
printf("*ip:%p\n\n",*ip); //使用指针访问变量的值
return 0;
}
运行结果:
在这里,其实也是能够发现,指针其实也是不难理解的。
(4)算术指针
算术指针主要有(++,--,+,-)四种,如何使用,我会娓娓道来。
1.递增指针(++)
代码案例:
#include <stdio.h>
const int add = 10;
/*
为什么用数组来做一个测试呢?
那是因为变量指针可以递增,
数组不能递增,而数组是一个常量指针。
*/
int main(){
int var[] = {10,20,30,40,50,60,70,80,90,100}; //数组
int i,*arithmetic; //声明变量和指针
arithmetic = var; //指针中的数组地址
for(i = 0;i < add;i++){
printf("存储地址:arithmetic[%d] = %x\n\n",i,arithmetic);
printf("存储值:carithmetic[%d] = %d\n\n",i,*arithmetic);
arithmetic++; //递增到下一个位置
}
return 0;
}
运行效果:
2.递减指针(--)
代码案例:
#include <stdio.h>
const int add = 10;
/*
为什么用数组来做一个测试呢?
那是因为变量指针可以递增,
数组不能递增,而数组是一个常量指针。
*/
int main(){
int var[] = {10,20,30,40,50,60,70,80,90,100}; //数组
int i,*arithmetic; //声明变量和指针
arithmetic = &var[add - 1]; //指针中的数组地址
for(i = add;i > 0;i--){
printf("存储地址:arithmetic[%d] = %x\n\n",i - 1,arithmetic);
printf("存储值:carithmetic[%d] = %d\n\n",i - 1,*arithmetic);
arithmetic--; //递增到下一个位置
}
return 0;
}
运行效果:
这个是和++反过来的。