1、
2、
3、
4、*号的意义
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;
}
我的是64位系统,所以指针占8个字节
0x7ffd2d56098c, 0x7ffd2d56098c, 10
8, 8, 0x7ffd2d560990
8, 8, 0x7ffd2d560998
8, 8, 0x7ffd2d5609a0
5、传值调用和传址调用
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;
}
aa = 1, bb = 2
aa = 2, bb = 1
6、常量指针
#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;
p1 = NULL;
*p2 = 2;
p2 = NULL;
*p3 = 3;
p3 = NULL;
*p4 = 4;
p4 = NULL;
return 0;
}
7、小结