指针

任何指针都占用8个字节的存储空间

清空指针
p=0;
p=NULL;
// 清空指针后,不能再间接访问其他存储空间
 //*p = 100.7;错误


数组名相当于指针常量,不可被更改
 
int与const哪个放前面都一样
相同
const int ic=20;
int const ic=20;
相同:
const int *pi;
int const *pi;
区别
 
int const*pi;//不能通过指针修改所指空间内容(可以通过其他方式修改),但是可以修改所指内存
int *const pi;//只是一个指针常量不能修改所指内存,但是可以通过指针修改所指空间内容

1.数组元素的访问方式
 int ages[5];
 int *p;
 p = ages;
 1> 数组名[下标]  ages[i]
 2> 指针变量名[下标] p[i]
 3> *(p + i)

 
 2.指针变量+1,地址值究竟加多少,取决于指针的类型
  int *   4
  char *  1
  double * 8

数组四种输出方法:
int i,a[]={1,2,3,4,5,6,7,8,9,0};
    int *pa;
    pa=a;
 //方法一
    for (i=0; i<=9; i++)
    {
        printf("%d\n",a[i]);
    }
    //方法二
    for (i=0; i<=9; i++)
    {
        printf("%d\n",*(a+i));
    }
    //方法三
    for (i=0; i<=9; i++)
    {
        printf("%d\n",pa[i]);
    }
    //方法四
    for (i=0; i<=9; i++)
    {
        printf("%d\n",*(pa+i));
    }
    //方法五
    for (i=0; i<=9; i++)
    {
        printf("%d\n",*pa);
        
pa++;

    }

当数组名作为函数参数时,退化为首元素指
 

指针与数组比较
所占空间不同!
  • -指针:只与操作系统位数有关! 
  • -数组:与元素个数和类型有关! 

数组名是常量地址,不能重指向(不能赋值)!

 
指针可以重指向!

sizeof是运算符,并不是指针,a代表的并非元素首地址指针
    printf("%zd\n",sizeof(a)/sizeof(int));

 

posted on 2014-09-14 21:51  安琪  阅读(144)  评论(0编辑  收藏  举报

导航