版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/tiger_gy/article/details/88667207
指针的入门pointer
pointer指针,一般计算机中用一个16进制数来表示内存地址。通过使用数据类型加*声明一个指针变量,指针变量只能用来保存内存地址,用取地址符&i 把变量i的地址取出来 用指针变量pointer 保存了起来,此时我们可以说 指针pointer指向了 i的地址。
#include<stdio.h>
#include<stdlib.h>
/**
*/
main(){
int i = 123;
//一般计算机中用16进制数来表示一个内存地址
printf("%#x\n",&i);
//int* int类型的指针变量 pointer指针 指针变量只能用来保存内存地址
//用取地址符&i 把变量i的地址取出来 用指针变量pointer 保存了起来
//此时我们可以说 指针pointer指向了 i的地址
int* pointer = &i;
//int *pointer ; int * pointer
printf("pointer的值 = %#x\n",pointer);
printf("*pointer的值%d\n",*pointer);
*pointer = 456;
printf("i的值是%d\n",i);
system("pause");
}
* 指针常见错误
* 声明了指针变量后 未初始化直接通过*p 进行赋值操作 运行时会报错
* * 未赋值的指针称为野指针(没有对指针进行赋值就对指针进行存取操作)
* 指针类型错误 如int* p 指向了double类型的地址, 通过指针进行读取操作时,读取值会出错
#include<stdio.h>
#include<stdlib.h>
/**
*/
main(){
//野指针 (没有对指针进行赋值就对指针进行存取操作) 指针使用之前要初始化 赋给它一个自己程序中声明的变量的地址
//指针使用的时候要注意 int类型的指针要指向int类型的内存地址, double类型的指针要指向double类型的地址 ....
//如果乱指会出bug
int i;
double d = 3.1415;
double* pointer = &d;
printf("pointer的值=%#x\n",pointer);
printf("*pointer = %lf\n",*pointer);
system("pause");
}