C语言-指针

来源:互联网 发布:制作app软件 编辑:程序博客网 时间:2024/06/01 10:42
数据访问分为两种形式:直接访问和间接访问.

内存单元的编号叫做地址.

指针使用来存放地址变量的.它在定义变量时其实还是一种数据类型,但是在实际开发过程中就说指针是地址.

例如:int *p = NULL;  尽管int *之间用空格,但是他们是一体的,NULL恒等于0;

指针变量所占的字节只与操作系统有关,32位操作系统占用4个字节,64为操作系统占用8字节. 在Xcode里键入-fno-objc-arc

取址运算符:& 地址是16位的16进制数.&可以取出变量的地址,用%d可以打印地址.  *是取值运算符,可以去除指针(地址)里面的值.
注意!!!!!!!!int *或者char *是一个整体,表示的是整型的指针或者char型的指针,也就是说,前面如果有类型标示符的话,*不是取值运算符.

指针的算术运算  加:p++,表示向高位移动4字节.  减:p—,表示向低位移动4字节.
注意!!!!!!!指针的类型决定它移动几个字节,int float为4字节.char为1字节,double为8字节.

指针的重指向:指针变量可以赋值,如果赋值的话,指针就指向了另外的一块区域,成为指针的重指向.

指针与数组:数组是用连续的内存空间,存储数据的构造类型.
数组名就是数组的首地址.
*(p+i)等价于p[i]

指针与数组的不同:1-所占的内存空间不同,指针所占用的内存空间只和操作系统有关,数组由数组元素的个数以及数组构造的元素的类型决定的.2-数组名是一个常量,而指针是一个变量.

指针与字符串:
字符数组首元素的地址恒等于数组名.
我们可以通过取值符操作单个字符,例如*(name+i)等价于name[i]

指针数组:用来存放指针的数组,数组的元素都是指针.

指针与函数:
交换举例:
void  jiaohuan (int *a,int *b);
void  jiaohuan (int *a,int *b)
{
    *a=*a^*b;
    *b=*a^*b;
    *a=*a^*b;

}
int a=3,b=5;
   
    jiaohuan(&a,&b);
   
    printf("%d %d",a,b);

0 0
原创粉丝点击