C-033.指针的运算

来源:互联网 发布:社区宽带是什么网络 编辑:程序博客网 时间:2024/05/16 12:47
指针变量:存放是内存字节的地址编号(无符号的整形数)

指针:是运算受限的无符号的整形数

指针运算:(我得理解就是所指向地址的运算)
指针 + 整形数 === 指针变量中值 + sizeof(其所指向数据类型)
指针 - 整数数 === 指针变量中值 - sizeof(其所指向数据类型)
pointer1 - pointer2 = (pointer1中值 - pointer2中值) / sizeof(其指向数据类型)

赋值运算:
=
+= 必须是一个整形数

-= 必须是一个整形数


比较运算
==
!=

>
<
>=

<=


自增自减
p++; p = p + 1;
++p; p = p + 1;

--p;

p--;

void test1(){    //算数运算    int nums[5] = {1,2,3,4,5};        int * pointer1 = nums;        int * pointer2 = &nums[4];        size_t size  = pointer2 - pointer1;        printf("%lu\n",size);//输出4}void test2(){    //赋值运算    int nums[] = {1,2,3,4,5};        int *p = nums;    p += 2;    p = p + 2;    p -= 1;    printf("%d\n",*p);//输出4    }int main(int argc, const char * argv[]) {        //关系运算    int nums[] = {1,2,3,4,5};//创建一个数组        int *p = nums;//指针指向一个数组,指向的是数组首元素的地址,指向1    printf("%p\n",p);//地址0x7fff5fbff760    printf("%d\n",*p);//打印1        p++;  //int类型的p++使它增加了4字节,使p指向2    printf("%p\n",p);//地址0x7fff5fbff764    printf("%d\n",*p);//打印2        int result =  nums == p; //比较的是他们的地址,p现在指向的是2,所以打印0    printf("%d\n",result);      return 0;}


0 0
原创粉丝点击