C语言指针、指针函数与函数指针、指针数组与数组指针
2015-01-30 16:47
639 查看
@指针
一个基本的数据类型(包括结构体等自定义类型)加上“ *”号就构成了一个指针类型的模子。这个模子的大小是一定的,与“ *”号前面的数据类型无关。“ *”号前面的数据类型只是说明指针所指向的内存里存储的数据类型。所以,在 32 位系统下,不管什么样的指针类型,其大小都为 4 byt e。
int *p = NULL——1 和*p = NULL——2 有什么区别?
1中:int *p;p=NULL;地址为null;
2中:p地址里面的值为null。
*p的值为“地址0x00000000处的值”(长度由指针类型决定,int为4,double为8)
int *p = NULL, *p表示0x00000000 ~ 0x00000003之间的值;
double *p = NULL, *p表示0x00000000 ~ 0x00000007之间的值。
@指针数组与数组指针
Int *p1[10]:这是一个数组,数组名为p1,其包含10个指向 i n t 类型数据的指针,即指针数组。
Int (*p2)[10]:这是是一个指针,指针变量名为p2,它指向一个包含10个 in t 类型数据的数组,即数组指针。
@指针函数与函数指针
A、c har * (* fun 1) ( char * p1 ,char * p2 )
fun1是指针变量,指向一个函数,函数返回一个char*类型,即函数指针。这里 f u n 1 不是什么函数名,而是一个指针变量,它指向一个函数。这个函数有两个指针类型的参数,函数的返回值也是一个指针。
例子:
char* fun ( char * p1 ,char * p2 )
{
int i = 0 ;
i = strcmp (p1,p2) ;
if (0 == i)
{
return p1 ;
}
else
{
return p2 ;
}
}
int main ( )
{
char * (* pf) (char * p1 ,char * p2 );
pf = &f un;
(* pf ) ( "aa","bb");
return 0;
}
B、c har * fun 3( char * p1, char * p2) ;
fun2是函数名,函数返回char*类型,即指针函数
@其他
问:
请教哪位大神解释如下语句的关系:
1:unsigned char str[]="abcd";
2:unsigned char str[]={'a','b','c','d','\0'};
3:unsigned char str[]={'a','b','c','d'};
4:unsigned char str[5]="abcd";
5:unsigned char str[4]="abcd";
答:
1、2、4的效果是等效的,3对应的str的size是4字节,5是一种错误的用法
注:部分内容来自《C程序深度解析》-很好的一本书。
一个基本的数据类型(包括结构体等自定义类型)加上“ *”号就构成了一个指针类型的模子。这个模子的大小是一定的,与“ *”号前面的数据类型无关。“ *”号前面的数据类型只是说明指针所指向的内存里存储的数据类型。所以,在 32 位系统下,不管什么样的指针类型,其大小都为 4 byt e。
int *p = NULL——1 和*p = NULL——2 有什么区别?
1中:int *p;p=NULL;地址为null;
2中:p地址里面的值为null。
*p的值为“地址0x00000000处的值”(长度由指针类型决定,int为4,double为8)
int *p = NULL, *p表示0x00000000 ~ 0x00000003之间的值;
double *p = NULL, *p表示0x00000000 ~ 0x00000007之间的值。
@指针数组与数组指针
Int *p1[10]:这是一个数组,数组名为p1,其包含10个指向 i n t 类型数据的指针,即指针数组。
Int (*p2)[10]:这是是一个指针,指针变量名为p2,它指向一个包含10个 in t 类型数据的数组,即数组指针。
@指针函数与函数指针
A、c har * (* fun 1) ( char * p1 ,char * p2 )
fun1是指针变量,指向一个函数,函数返回一个char*类型,即函数指针。这里 f u n 1 不是什么函数名,而是一个指针变量,它指向一个函数。这个函数有两个指针类型的参数,函数的返回值也是一个指针。
例子:
char* fun ( char * p1 ,char * p2 )
{
int i = 0 ;
i = strcmp (p1,p2) ;
if (0 == i)
{
return p1 ;
}
else
{
return p2 ;
}
}
int main ( )
{
char * (* pf) (char * p1 ,char * p2 );
pf = &f un;
(* pf ) ( "aa","bb");
return 0;
}
B、c har * fun 3( char * p1, char * p2) ;
fun2是函数名,函数返回char*类型,即指针函数
@其他
问:
请教哪位大神解释如下语句的关系:
1:unsigned char str[]="abcd";
2:unsigned char str[]={'a','b','c','d','\0'};
3:unsigned char str[]={'a','b','c','d'};
4:unsigned char str[5]="abcd";
5:unsigned char str[4]="abcd";
答:
1、2、4的效果是等效的,3对应的str的size是4字节,5是一种错误的用法
注:部分内容来自《C程序深度解析》-很好的一本书。
相关文章推荐
- [C语言]指针数组与数组指针,函数指针与指针函数
- C语言指针系列 - 一级指针.一维数组,二级指针,二维数组,指针数组,数组指针,函数指针,指针函数
- C语言指针系列 - 一级指针.一维数组,二级指针,二维数组,指针数组,数组指针,函数指针,指针函数
- C语言 复杂指针的申明问题 数组指针 指针数组 函数指针 指针函数一览无遗! C/C++求职面试必备考点(四)
- c语言学习,指针函数、函数指针、指针的指针、指向指针数组的指针
- 巩固C语言(十)----指针数组 & 函数指针和指针函数
- [C语言]指针数组和指针数组|函数指针和指针函数
- C语言02 - 指针运算、数组与指针、指针变量名、指针与函数参数、指针函数、函数指针、二级指针
- c语言学习,指针函数、函数指针、指针的指针、指向指针数组的指针
- C语言 复杂指针的申明问题 数组指针 指针数组 函数指针 指针函数一览无遗! C/C++求职面试必备考点(四)
- 指针数组,数组指针,指针函数,函数指针
- C语言之指针、数组和函数
- 函数指针和指针函数,函数指针数组
- 水滴石穿C语言之指针、数组和函数
- C语言指针导学(4)——分清函数指针和指针函数
- 指针, 指针的指针, 数组, 指针数组, 数组指针, 指针函数, 函数指针
- C语言之指针、数组和函数
- C语言之指针、数组和函数
- C语言之指针、数组和函数(转)
- C语言之指针、数组和函数