您的位置:首页 > 其它

C-033.指针的运算

2015-12-03 11:28 239 查看
指针变量:存放是内存字节的地址编号(无符号的整形数)

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

指针运算:(我得理解就是所指向地址的运算)

指针 + 整形数 === 指针变量中值 + 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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: