c语言的指针地址与常数相加,C语言----指针算术运算

指针算术运算分为指针加法运算和指针减法运算。

一、指针加法运算

这里对指针加常数(如int*p,p++)进行讨论

指针加指针   非法

假设指针+1有以下三种情况:

1、加一个单元格 (正确)

2、加一个字节

3、加整个数组(没有意义)

#includeint main()

{

int arr[10] = {1,2,3,4,5,6,7,8,9,10};

int *p = arr; //*p = arr[0]

*p = 10; //arr[0] = 10

p++; //给指针加1

//p = (int *)((char *)p+1);

*p = 20;

printf("%d,%d\n",arr[0],arr[1]);

return 0;

}

(1)首先验证第二种情况,假设指针+1为加一个单元格,根据以上代码分析如下:

注:两个十六进制数可以表示为8个位的二进制数

数据类型int每个单元格为4个字节

十进制的10转化为8位的十六进制数为: 0000000a  //二进制数为32位

十进制的20转化为8位的十六进制数为: 00000014

c语言的指针地址与常数相加,C语言----指针算术运算_第1张图片

综上得出࿱

你可能感兴趣的:(c语言的指针地址与常数相加)