c语言指针用法
2013-08-14 16:35
281 查看
一、指针
二、指针与变量
三、指针与数组
指针数组
(1)定义
(2)定义形式:类型名 *数组名[数组长度]
如要将二维数组赋给一指针数组:
int *p[3];
int a[3][4];
for(i=0;i<3;i++)
p[i]=a[i];
这里int *p[3] 表示一个一维数组内存放着三个指针变量,分别是p[0]、p[1]、p[2]
所以要分别赋值。
注:指针数组常适用于指向若干字符串,这样使字符串处理更加灵活方便
数组指针
(1)定义
(2)定义形式 类型名 (*指针变量名)[数组长度]
如要将二维数组赋给一指针,应这样赋值:
int a[3][4];
int (*p)[4]; //该语句是定义一个数组指针,指向含4个元素的一维数组。
p=a; //将该二维数组的首地址赋给p,也就是a[0]或&a[0][0]
p++; //该语句执行过后,也就是p=p+1;p跨过行a[0][]指向了行a[1][]
所以数组指针也称指向一维数组的指针,亦称行指针。
注:
四、指针与字符串
(1)char* string;string="I love China!";但不可以char string[14];string="I love China!";
(2)定义字符数组后,在编译时为它分配内存单元,它有确定的地址;而定义一个字符指针,在使用前必须为其指向具体的地址;
如下面是正确的:
char *s,str[10];s=str;
五、指针与函数
指针函数
(1)定义:指针函数是指函数的返回值类型是一个指针类型,即本质是一个函数
(2)定义形式:数据类型 * 函数名(参数列表)
注:
函数指针
(1)定义:指向函数的指针
(2)定义形式:数据类型 (*指针变量名)(参数列表)
注:一般传输一函数指针,返回处理后的该指针地址
I,在给函数指针变量赋值时,只需给出函数名而不必给出参数(因为是将函数入口地址赋给函数指针,而不涉及实参与形参的结合的问题),如:
int max(int,int);
int (*p)(int,int);
p=max;
II,用函数指针变量调用函数时,只需将指针名代替函数名即可,括号中需要实参,如
int c;
c=(*p)(a,b);
int t | 定义整型变量 |
int *p | p为指向整型数据的指针变量 |
int a | 定义整型数组a,它有n个元素 |
int *p | 定义指针数组p,它由n个指向整形数据的指针元素组成 |
int (*p) | p为指向含n个元素的一维数组的指针变量 |
int f() | f为返回整型函数值的函数 |
int *f() | p为返回一个指针的函数,该指针指向整型数据 |
int (*f)() | p为指向函数的指针,该函数返回一个整形值 |
int **p | p是一个指针变量,它指向一个指向整形数据的指针变量 |
三、指针与数组
指针数组
(1)定义
(2)定义形式:类型名 *数组名[数组长度]
如要将二维数组赋给一指针数组:
int *p[3];
int a[3][4];
for(i=0;i<3;i++)
p[i]=a[i];
这里int *p[3] 表示一个一维数组内存放着三个指针变量,分别是p[0]、p[1]、p[2]
所以要分别赋值。
注:指针数组常适用于指向若干字符串,这样使字符串处理更加灵活方便
数组指针
(1)定义
(2)定义形式 类型名 (*指针变量名)[数组长度]
如要将二维数组赋给一指针,应这样赋值:
int a[3][4];
int (*p)[4]; //该语句是定义一个数组指针,指向含4个元素的一维数组。
p=a; //将该二维数组的首地址赋给p,也就是a[0]或&a[0][0]
p++; //该语句执行过后,也就是p=p+1;p跨过行a[0][]指向了行a[1][]
所以数组指针也称指向一维数组的指针,亦称行指针。
注:
四、指针与字符串
(1)char* string;string="I love China!";但不可以char string[14];string="I love China!";
(2)定义字符数组后,在编译时为它分配内存单元,它有确定的地址;而定义一个字符指针,在使用前必须为其指向具体的地址;
如下面是正确的:
char *s,str[10];s=str;
五、指针与函数
指针函数
(1)定义:指针函数是指函数的返回值类型是一个指针类型,即本质是一个函数
(2)定义形式:数据类型 * 函数名(参数列表)
注:
函数指针
(1)定义:指向函数的指针
(2)定义形式:数据类型 (*指针变量名)(参数列表)
注:一般传输一函数指针,返回处理后的该指针地址
I,在给函数指针变量赋值时,只需给出函数名而不必给出参数(因为是将函数入口地址赋给函数指针,而不涉及实参与形参的结合的问题),如:
int max(int,int);
int (*p)(int,int);
p=max;
II,用函数指针变量调用函数时,只需将指针名代替函数名即可,括号中需要实参,如
int c;
c=(*p)(a,b);
相关文章推荐
- C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | IT宅.com
- c语言指针用法难点
- C语言中指针的几种用法
- C语言语法笔记 – 高级用法 指针数组 指针的指针 二维数组指针 结构体指针 链表 | IT宅.com
- C语言中数组名和指针的区别 及 sizeof用法
- c语言中函数指针的用法和技巧
- [iOS]C语言技术视频-15-指针变量高级用法练习一(函数指针完成动态排序)
- C语言中指针的几种用法
- C语言的灵魂--指针基本用法
- c语言常见的几种指针用法
- [Pointer]C语言中指针的高级用法
- C语言day3(字符串,字符数组,一级指针的典型用法)
- 关于C语言指针的用法
- C语言中指针的高级用法
- C语言之typedef函数指针用法
- C语言双指针的常见用法
- C语言 结构体与结构体指针用法总结
- 黑马程序员-C语言指针用法
- C语言中的const用法以及常量指针与指针常量(有口诀!)
- c语言中指针的用法以及注意的地方