1、定义一个指针变量
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int a = 10;//a在内存中要分配的空间--4字节
printf("%p\n", &a);//%p专门用于打印地址的
int* pa = &a;//pa是用于存放地址的,在C语言中pa叫指针变量
//*说明pa是指针变量
//int说明pa修饰的是int类型的对象
char b = 'w';
char* pa1 = &b;
}
a在内存中要分配的空间--4字节 %p专门用于打印地址的
int*?pa?=?&a;//pa是用于存放地址的,在C语言中pa叫指针变量 *说明pa是指针变量 int说明pa修饰的是int类型的对象
2、指针大小
如何确定一个指针的大小的呢?
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
printf("%d\n", sizeof(char*));
printf("%d\n", sizeof(int*));
printf("%d\n", sizeof(float*));
printf("%d\n", sizeof(double*));
printf("%d\n", sizeof(short*));
printf("%d\n", sizeof(long*));
printf("%d\n", sizeof(long long*));
//大小均为8字节
}
输出结果如下
可见,指针大小均为8字节,指针大小是相同的,这是因为指针是用来存放地址的,指针需要多大空间取决于地址存储需要多大空间;比如32位机器指针大小就是4字节,64位机器指针大小就是8字节。
3、用解引用操作符*来改变局部变量的值
有如下代码段
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int a = 25;
int* pa = &a;
*pa = 56;//* 就是解引用操作符,*pa就是通过pa找到a的地址后改变a的值
printf("%d\n", a);
}
输出如下
可见,其中a的值被改变了,这是因为*? 是解引用操作符,*pa就是通过pa找到a的地址后改变a的值。 ?
|