这篇文章已经发布超过一年了,内容可能已经过时,请谨慎参考。
指针
int* a =0X112233;//指针a的地址
int* b = &a;
char* c = &a;printf("%p" , b);//0066FF9F8
printf("%p" , b + 1);//0066FF9FCprintf("%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 ;