销售型网站有哪些,正规拼多多代运营公司,简单的做海报的网站,上海建站模板平台什么是指针#xff1f; 指针是存储内存地址的变量。就像int变量用于存储整数值一样#xff0c;指针变量用于存储内存地址。指针是一种指向内存单元的特殊变量。
内存单元地址通常使用的是16进制表示#xff08;0#xff5e;9和A#xff5e;F#xff09;来表示数字。显示…什么是指针 指针是存储内存地址的变量。就像int变量用于存储整数值一样指针变量用于存储内存地址。指针是一种指向内存单元的特殊变量。
内存单元地址通常使用的是16进制表示09和AF来表示数字。显示16进制数时通常使用前缀0x。
声明指针作为一种变量指针也需要声明。通常将指针声明为声明为指向特定的类型。如int者意味着指针包含的地址对应的内存单元存储了一个整数。 PointedType * PointerVariableName;
注意除非对指针进行初始化否则它包含的将是垃圾值。对于指针来说这种垃圾值非常危险因为指针包含的值被视为地址。未初始化的指针可能导致程序访问非法内存单元进而导致程序崩溃。因此将指针初始化为NULL。
使用引用运算符获取变量的地址 int age 30; age 将是存储该变量的值30的内存的地址。
使用指针存储地址 int age 30; int* pAage age;
给指针重新赋值使其指向另外一个变量
动态内存分配 如果在程序中使用下面这样的数组声明 int myNums[100]; 程序存在两个问题 1.这限制了程序的容量无法存储100个以上的数字 2.如果只需存粗1个数组却为100个数字预留存储空间这将降低系统的性能。 原因数组的内存分配是静态和固定的。
使用new和deldete动态地分配和释放内存
使用new来分配新的内存块通常情况下如果成功new将返回指向一个指针指向分配的内存否则将引发异常。使用new时需要指定要为哪种数据类型分配内存。 Type* p new Type;
需要为多个元素分配内存时还可指定要为多少个元素分配内存 Type * p new Type[num];
举例 int* p new int; int* p new int[10];
注意使用new分配的内ucn最终都需使用对应的delete进行释放。 delete p; delet[] p;
将关键字const用于指针 1.指针包含的地址是常量不能修改但可修改指针指向的数据 int day 30; int* const p day; *p 31;//OK!Data pointed to can be changed int day2 28; p day2;//Not OK! Cannot change address!
2.指针指向的数据为常量不能修改但可以修改指针包含的地址即指针可以指向其他的地方。 int a 24; const int* p a; int b 12; p b;//OK *p 13;//Not OK
3.指针包含的地址以及它指向的值都是常量不能修改 int a 24; const int* const p a; *p 13;//Not ok int b 12; p b;//Not Ok
使用指针时常犯的编程错误 1.内存泄漏 如果使用new动态分配的内存不再需要后程序员没有使用配套的delete释放。
2.指针指向无效的内存单元 在使用*对指针解除引用以访问指向的值时务必确保指针指向有效的内存单元否则程序要么崩溃要么行为不端。
指针编程应该遵守一些基本原则 1.务必初始化指针变量否则它将包含垃圾值初始化NULL 2.务必仅再指针有效时才使用它否则程序可能崩溃 3.对于使用new分配得内存一定要记得使用delete进行释放否则应用程序将泄漏内存进而降低系统得性能。 4.使用delete释放内存块或指针后不要访问它 5.不要对同一个内存地址调用多次delete 6.使用完动态分配得内存块后被网络对其调用delete
引用是变量得别名。声明引用时需要将其初始化为一个变量因此引用只是另一种访问相应变量存储数据得方式。
要声明引用可使用引用运算符 VarType original value; VarType ReferenceVariable original;
using namespace std; int main(){ int a 30; cout “a” a endl; cout “a is at address:” a endl;
int* b a;
cout b is at address: b endl;
}输出a 和 b 的地址相同 因此引用是真正的别名即相应变量的另一个名字
是什么让引用很有用 引用让您能够访问相应变量所在的内存单元。 using namespce std; void GetSquare(int number){ number* number; }
int main(){ cout “Enter a number you wish to square”; int number 5;
GetSquare(number);
cout number number endl;} 输出25
将关键字const用于引用 需要禁止通过引用修改它指向的变量的值为此可在声明引用时使用关键子const int a 30; const int b a; b 45;//Not allowed:constRef can’t change value in original int c b;//Not allowed.c is not const
问与答 1.我声明了两个指针 int* a new int; int* b a;为了释放内存是否需要对他们都调用delete? 答这样做是错误的对new返回的地址只能调用delete一次最好避免让两个指针指向相同的地址因为对其中一个调用delete将导致另外一个无效。