首页 > 编程知识 正文

c++指针初始化,字符串指针初始化

时间:2023-05-05 19:13:11 阅读:114476 作者:3976

请注意,指针被设计为指向特定数据类型的对象。 使用地址初始化指针时,它必须是指针可以指向的对象的地址。

例如,由于myValue是整数,因此以下pint定义有效:

int myValue

int *pint=myValue;

以下语句也有效。 因为ages是整数数组。

int ages[20];

int *pint=ages;

但是,以下pint定义是非法的。 因为我的浮动不是int :

浮动我的浮动;

int *pint=myFloat; //非法

可以用与其他相同类型的变量相同的语句定义指针。 以下声明定义整数变量myValue,然后定义用myValue的地址初始化的指针pint。

int myValue,*pint=myValue;

以下语句定义数组readings和指针maker。 maker指针使用readings数组中第一个元素的地址初始化。

双精度读数[ 50 ],* marker=读数;

当然,指针只能用预定义对象的地址初始化。 以下语句无效,因为它使用不存在的对象地址初始化了pint。

int *pint=myValue; //非法

int myValue

未初始化的本地指针变量中未保存有效地址。 如果尝试使用这样的指针,将发生运行时错误。 在旧版本c中,通常将地址0分配给当前不指向有效内存位置的指针。

int *打印=0;

双精度*双精度=0;

在大多数计算机上,用户程序被操作系统数据占用,因此无法访问地址为0的内存。 这将确保0是指示无效内存位置值的安全选择。

许多头文件(如iostream、fstream和cstdlib )定义了名为NULL的常量,表示指针值0。 因此,假设其中一个头文件已经包含,上面的代码可以编写如下:

int * ptrtoint=空值;

float *ptrTofloat=NULL;

很多人喜欢后面的形状。 这是因为nul非常清楚地确认了代表地址0而不是整数0。 无论如何,值为0的指针也称为空指针。 C 11定义了指示无效内存地址的关键字nullptr。

int *ptrToint=nullptr;

双精度* ptrtodouble=nullptr;

可以使用运算符来测试是否相等。 使用=和==测试指针p是否等于0、NULL或nullptr,并确定指针p是否指向有效地址。 以下是示例。

if(p!=使用=nullptr(//指针p . )

if(p!=NULL ) { //指针P'. }

if(p!=0)//使用指针P. }

只有在确定指针不为0时才可用。 因此,上述所有测试与以下测试相同。

使用if(p )//指针P. }

在C 11中,可以通过在变量定义的末尾放置一对空大括号{}将变量初始化为默认值。 数字类型(如int、long和double )的默认值为0,指针类型的默认值为nullptr。 因此,有以下定义语句:

int mylnt=0;

双精度双精度=0.0;

int *ptrToInt=nullptr;

等效于以下语句:

int mylnt=0;

双精度双精度=0.0;

int *ptrToInt=nullptr;

重要的是能够快速检查指针是否分配了正确的值。 因此,指针必须始终初始化,或被指定为紧邻定义位置的值。 此外,在指针离开范围或程序结束之前,必须为不再指向有效位置的指针指定nullptr值。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。