Chinaunix首页 | 论坛 | 博客
  • 博客访问: 343804
  • 博文数量: 82
  • 博客积分: 2602
  • 博客等级: 少校
  • 技术积分: 660
  • 用 户 组: 普通用户
  • 注册时间: 2007-08-10 08:48
文章分类

全部博文(82)

文章存档

2008年(17)

2007年(65)

分类: C/C++

2007-08-31 11:46:54

一 指针数据类型
int i:定义整型变量i
int *p:p为指向整形数据的指针变量
int a[n]:定义含有n个整型元素的数组a
int *p[n]:定义指针数组p,它由n个指向整型数据的指针元素组成
int (*P)[n]:p为指向含有n个元素的一维数组的指针变量
int f():f为返回整型函数值的函数
int *p():p为返回一个整型指针的函数
int (*P)():P为指向函数的指针,该函数返回一个整型值
int **p:p是一个指向整型指针的指针变量,即指针的指针
struct exp_struct *p:p是一个指向exp_struct类型结构体的指针
二 指针运算
1 指针变量加减一个整数
p++ p-- p+i p-i p+=i p-=i
2 指针变量赋值
p=&a 将变量a的地址赋给p,即指针p指向变量a,*p=a
P=array 将数组array的首地址付给p,即p=&array[0]
p=&array[i] 将数组array的第i个元素的地址付给p,即*p=array[i]
int (*p)(int ,int) ;p=max:将函数max的入口地址赋给p,以后用到max(x,y)时可以用p(x,y)代替
p1=p2:p1和p2同为指针变量,将p2的值付给p1
3指针数组的初始化
char *p[]={"mon","tue","wed","thu","fri","sat","sun"};
 
Note:
(1)不能将一个整数付给指针变量p
如:p=1000,即将地址1000付给p,但实际做不到。只能将变量已分配的地址付给指针变量
(2)不能把指针变量p的值(它是一个地址)付给任何整型变量i
如:p=i
(3)指针变量可以有空值,即p=NULL
(4)两个变量可以相减,但相加没有实际意义
   如果两个指针变量指向同一个数组的元素,则两个指针变量值之差是两个指针之间的元素个数
(5)两个指针变量的比较
   若两个指针指向同一个数组的元素则可进行比较,指向前面的元素的指针变量小于指向后面的指针变量
(6)sizeof(p)得到的是指针p的指针类型的长度4(任何一个指针类型的长度都是4)
   strlen(p)得到的是指针p指向的字符串的长度(不包含'\0')
如:char *p="abcdefg";这里p是一个指向字符串的静态指针,初始化以后就不能对其内容进行修改,即不能p[2]='x'这样修改内容
   n=sizeof(p);//n=4
   m=strlen(p);//n=7
  

int
main()
{
        char str[]="abcd efg hi";
        char *p="wanghaittao";
        int n,m,s,t;
        n=sizeof(p);
        m=strlen(p);
        s=sizeof(str);
        t=strlen(str);
        printf("sizeof(p):%d\n",n);
        printf("strlen(p):%d\n",m);
        printf("sizeof(str):%d\n",s);
        printf("strlen(str):%d\n",t);
        printf("****************************\n");
        printf("*p:%s\n",p);
        printf("str[]:%s\n",str);
        printf("str[i]\t16_mod\tchar_mod\n");
        int i;
        for(i =0;i<12;i++)
        printf("str[%d]\t%x\t%c\n",i,str[i],str[i]);
        printf("str[]:%s\n",str);
        exit(0);
}

显示结果:

sizeof(p):4//指针长度
strlen(p):11//指针所指的字符串长度
sizeof(str):12
strlen(str):11
****************************//注意空格在数组中的存储
*p:wanghaittao
str[]:abcd efg hi
str[i] 16_mod char_mod
str[0] 61       a
str[1] 62       b
str[2] 63       c
str[3] 64       d
str[4] 20
str[5] 65       e
str[6] 66       f
str[7] 67       g
str[8] 20 
str[9] 68       h
str[10] 69      i
str[11] 0
str[]:abcd efg hi

阅读(2028) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~