黑马程序员——C语言指针
来源:互联网 发布:长歌门捏脸数据 编辑:程序博客网 时间:2024/04/30 17:51
——- android培训、java培训、期待与您交流! ———-
在C语言中,指针占有一个非常重要的位置。所以,学号C语言,就必须学好指针这个变量。
下面,我就对指针这个变量进行详细的解读。
一.指针的概念
指针:指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。
在内存中,变量是这样表示的如
int a = 10 ; //定义一个整型变量,赋值为10
这句话,就在内存中做了如下的事情:
地址 OX10变量名 a变量值 10
一般来说变量的值都为数字、字符等内容,但是指针变量的变量值为一个地址。
int *p; //定义一个指向整形的指针pp=&a; //把a的地址赋予指针变量p
地址 OX20变量名 p变量值 OX10 //a的地址
二.指针的类型
指针的类型就是指针地址所指向数据的类型。从语法的角度看,你只要把指针声明语句里的指针名字去掉,剩下的部分就是这个指针的类型。这是指针本身所具有的类型。
类型:
- 整型指针
int *ptr; //指针的类型是int *
- 字符型指针
char *ptr; //指针的类型是char *
- 指向指针的指针
int **ptr; //指针的类型是 int **
- 数组中的指针
int (*ptr)[3]; //指针的类型是 int(*)[3]
- 指向数组指针的指针
int *(*ptr)[4]; //指针的类型是 int *(*)[4]
3.指针的基本运算
指针可用的运算为’+’,’-‘运算,每当指针加减时,并不是物理地址加减,而是加减的值乘以指针指向类型在内存中占用的物理空间的大小。即:
int a[2]={10,20}; int *p; //指针类型为int p=&a; p=p+1; //p实际增加量的为1*(sizeof(int))
4.’*’与’&’
说到指针,不得不提’*’与’&’这两个符号。
- ‘*’可以理解为取地址所保存的值;
int a=10;int *p;p=&a;print("\n%d",*p); //打印出来的是p指向a的值
- ‘&’可以理解为取变量的地址;
int a=10;print("\n%d",&a); //打印出来的是a的地址
‘*’与’&’是一对相反的运算:
int a=10;print("\n%d",*(&a); //打印出来的是10,即 *(&a)=a
5.指针与数组的关系
当我们一遍这样定义一个数组:
int a[10];
其实当这样操作后,就相当于定义了一个整形指针指向了数组的第一个数。即:
a=&a[0];
所以,取数组中各元素,也可以用指针的方法:
int a[10]={0,1,2,3,4,5,6,7,8,9};int v; v=a[0]; //也可写成:v=*a; v=a[3]; //也可写成:v=*(a+3); v=a[4]; //也可写成:v=*(a+4);
6.函数指针
可以把一个指针声明成为一个指向函数的指针。
int fun1(char*,int); int (*pfun1)(char*,int); pfun1=fun1; int a=(*pfun1)("abcdefg",7);//通过函数指针调用函数。
可以把指针作为函数的形参。在函数调用语句中,可以用指针表达式来作为 实参。
int fun(char*); int a; char str[]="abcdefghijklmn"; a=fun(str); int fun(char*s) { int num=0; for(int i=0;i { num+=*s;s++; } return num; )
这个例子中的函数fun统计一个字符串中各个字符的ASCII码值之和。前面说 了,数组的名字也是一个指针。在函数调用中,当把str作为实参传递给形参s后 ,实际是把str的值传递给了s,s所指向的地址就和str所指向的地址一致,但是 str和s各自占用各自的存储空间。在函数体内对s进行自加1运算,并不意味着同时对str进行了自加1运算。
以上就是我对指针要点的总结。
- 黑马程序员——C语言指针
- 黑马程序员—C语言—指针
- 黑马程序员——C语言指针
- 黑马程序员——C语言指针
- 黑马程序员——C语言指针
- 黑马程序员——C语言指针
- 黑马程序员——C语言指针
- 黑马程序员—C语言_指针
- 黑马程序员—C语言的指针
- 黑马程序员——C语言------指针和指针变量
- 黑马程序员——C语言——指针
- 黑马程序员——C语言基础——指针
- 黑马程序员————C语言指针
- 黑马程序员——C语言——指针
- 黑马程序员——C语言——指针
- 黑马程序员——C语言——指针
- 黑马程序员——C语言基础—-----指针
- 黑马程序员——C语言—数组、指针
- shell join命令详解(转)
- c++ primer第五版(中文)习题答案 第二章第四节-const限定符
- ajax实现简单的多人聊天
- Mangos源码分析(14):Mangos预编译头文件及模块划分随想
- lua语言中与时间相关的函数总结
- 黑马程序员——C语言指针
- linux常用命令ls
- 密码加盐-Salting password
- 闲聊
- JavaScript高级程序设计之DOM之节点层次之Text类型第10.1.4讲
- Spring中bean的生命周期
- Mangos源码分析(15):游戏对象的实现
- 《剑指offer》——顺时针打印矩阵
- 图像处理和图像识别中常用的matlab函数