龙华响应式网站建设,平面设计如何在家接单,黄骅贴吧新闻,上海到北京火车时刻表查询第1节 指针的基本概念 1、变量的地址#xff1a; 变量是内存地址的简称#xff0c;在C中#xff0c;每定义一个变量#xff0c;系统就会给变量分配一块内存#xff0c;内存是有地址的。 C用运算符获取变量在内存中的起始地址。 语法#xff1a; 变… 第1节 指针的基本概念 1、变量的地址 变量是内存地址的简称在C中每定义一个变量系统就会给变量分配一块内存内存是有地址的。 C用运算符获取变量在内存中的起始地址。 语法 变量名 2、指针变量 指针变量简称指针他是一种特殊的变量专用于存放变量在内存中的起始地址。 语法 数据类型 *变量名 数据类型必须是合法的C数据类型intchardouble或其他自定义的数据类型。 星号*与乘法中的星号是相同的但是在这个场景中星号用于表示这个变量是指针。 3、对指针赋值 不管是整型、浮点型、字符型还是其他的数据类型的变量他的地址都是一个十六进制数。我们用整型指针存放整数类型变量的地址 用字符型指针存放字符型变量的地址用浮点型指针存放浮点型变量的地址。 语法 指针变量名 4、指针占用的内存 指针也是变量是变量就要占用内存空间。 在64位系统中不管什么类型的指针占用的内存都是8字节。 注意 对指针的赋值操作也通俗的呗称为“指向某变量”被指向的变量的数据类型称为“基类型”。 如果指针的数据类型与基类型不符编译会出现警告。但是可以强制转换他们的类型。 在C中指针是复合数据类型复合数据类型是指基于其他类型而定义的数据类型在程序中int是整型类型int * 是整型指针类型 int * 可以用于声明变量可以用于sizeof运算符可以用于数据类型的强制转换总的来说把int * 当成一种数据类型就是了。 #includestdio.h
#includeiostreamusing namespace std;
int main()
{char a 65;int b 1234;float c 3.14;double d 3.1415926;char* pa a;int* pb b;float* pc c;double* pd d;cout a的地址是 (void*) a endl; // (char*)是强制类型转换cout b的地址是 (void*)b endl;cout c的地址是 (void*)c endl;cout d的地址是 (void*)d endl;cout sizeof(a) sizeof(a) endl;cout sizeof(b) sizeof(b) endl;cout sizeof(c) sizeof(c) endl;cout sizeof(d) sizeof(d) endl;cout pa的地址是 (int*)pa endl; // (int*)是强制类型转换cout pb的地址是 (int*)pb endl;cout pc的地址是 (int*)pc endl;cout pd的地址是 (int*)pd endl;cout sizeof(*pa) sizeof(*pa) endl;cout sizeof(*pb) sizeof(*pb) endl;cout sizeof(*pc) sizeof(*pc) endl;cout sizeof(*pd) sizeof(*pd) endl;return 0;
}第2节 使用指针 声明指针变量后在没有赋值之前里面是乱七八糟的值这时候不能使用指针。 指针存放变量的地址因此指针名表示的是地址就像变量名可以表示变量一样 *运算符被称为间接值或解除引用解引用运算符将它用于指针可以得到该地址的内存中存储的值*也是乘法符号C根据上下文来确定所指的是乘法还是解引用。 变量和指向变量的指针就像同一枚硬币的两面。 #includeiostreamusing namespace std;
int main()
{int a 8;int* pa a;cout a a endl;cout *pa *pa endl;*pa 9;cout a a endl;cout *pa *pa endl;a 12;cout a a endl;cout *pa *pa endl;return 0;
}