C语言进阶课程学习记录-第26课 - 指针的本质分析
- *号
- 实验-指针的大小
- 实验-传址交换数值
- 实验-const与指针
- 小结
本文学习自狄泰软件学院 唐佐林老师的 C语言进阶课程,图片全部来源于课程PPT,仅用于个人学习记录
*号
实验-指针的大小
#include <stdio.h>
int main()
{
int i = 0;
int* pI;
char* pC;
float* pF;
pI = &i;
*pI = 10;
printf("%p, %p, %d\n", pI, &i, i);
printf("%d, %d, %p\n", sizeof(int*), sizeof(pI), &pI);
printf("%d, %d, %p\n", sizeof(char*), sizeof(pC), &pC);
printf("%d, %d, %p\n", sizeof(float*), sizeof(pF), &pF);
return 0;
}
/*output:
0060FEFC, 0060FEFC, 10
4, 4, 0060FEF8
4, 4, 0060FEF4
4, 4, 0060FEF0
*/
实验-传址交换数值
#include <stdio.h>
int swap(int* a, int* b)
{
int c = *a;
*a = *b;
*b = c;
}
int main()
{
int aa = 1;
int bb = 2;
printf("aa = %d, bb = %d\n", aa, bb);
swap(&aa, &bb);
printf("aa = %d, bb = %d\n", aa, bb);
return 0;
}
/*output:
aa = 1, bb = 2
aa = 2, bb = 1
*/
实验-const与指针
#include <stdio.h>
int main()
{
int i = 0;
const int* p1 = &i;
int const* p2 = &i;
int* const p3 = &i;
const int* const p4 = &i;
//*p1 = 1; // compile error
p1 = NULL; // ok
//*p2 = 2; // compile error
p2 = NULL; // ok
*p3 = 3; // ok
// p3 = NULL; // compile error
//*p4 = 4; // compile error
// p4 = NULL; // compile error
return 0;
}
小结
指针是C语言中-种特别的变量
指针所保存的值是内存的地址
可以通过指针修改内存中的任意地址内容