这篇文章已经发布超过一年了,内容可能已经过时,请谨慎参考。

指针

int* a =0X112233;//指针a的地址
int* b = &a;
char* c = &a;
printf("%p" , b);//0066FF9F8
printf("%p" , b + 1);//0066FF9FC
printf("%p", c);//0066FF9F8
printf("%p", c + 1);//0066FF9F9

数组指针


int arr[10] = { 0 };
int *p = arr;// &arr[0]
int i = 0;
for(i = 0; i <= 10 ; i++){

*p = i;
p++;
 | 0 | 1 | 2| 3 | 4 | 5 | 6 | 7 | 8 | 9 |
 !这里是p     |
 p++|
 		  |p在这里
}

计算指针跟指针之间元素

指针 - 指针 得到的是指针和指针之间元素的个数 不是所有的指针都能相减,指向同一块空间的两个指针才可以相减!!! 例:

int arr[10]= { 0 };
printf("%d\n"arr[ 9 ] - arr[ 0]);

用指针来访问数组

int numbers[5] = {1, 2, 3, 4, 5}; int *ptr = numbers; // 数组名 numbers 即是指向数组首元素的指针 使用下标:

int firstElement = numbers[0];  // 使用数组下标访问第一个元素
int thirdElement = numbers[2];  // 使用数组下标访问第三个元素
使用指针运算:
int firstElement = *ptr;      // 通过指针获取第一个元素
int secondElement = *(ptr+1); // 通过指针获取第二个元素
遍历数组
通过指针遍历数组是一种常见的操作。你可以使用循环结构:
int i;
for (i = 0; i < 5; ++i) {
    printf("%d ", *(ptr + i));  // 通过指针访问数组元素
}
```c
int\* p = &a ;
int 说明指向的对象是 int 类型的

- 说明 p 是指针变量
  指针的作用是用来存放别人的地址的

```c

*p //解引用操作符,意思是通过P中存放的地址,找到p所指向的对象,*p就是p指向的对象
用法:
int a = 10 ;//定义a = 10
int* p = &a ;//把指针p 存放a的地址
*p = 20 ;//解引用符,就是当前p存放的是a的地址,也就是p = a = 10,此时再让 p = 20 ,那么原来存放 a地址的10就变为了20
printf("%d\n" , a);//此时在输出就输出20

注:将 a 地址内改变数以后它的地址不变

指针变量的大小取决于一个地址存放的的时候需要多大的空间 32 位机器上的地址: 32bit ——4byte 所以指针变量的大小是 4 个字节 64 位机器上的地址: 64bit ——8byte 所以指针变量的大小是 4 个字节

int *a , b , c;//这个代表只是给 a 附上指针 b 跟 c 都只得到了一个 int 类型 想要他们都是指针则 int *a ,*b ,*c ;