C++指针、数组、字符串数组、cout几者关系说明

以小程序进行说明这几者之间的关系:

#include <iostream>

int main()

{

char ch_array[10] = “Today”;//最好在声明时即进行初始化

int int_array[10] = {1,2,3,4,5,6};//最好在声明时即进行初始化

                                                        //intint_array[10];

                                                        //int_array= {1,2,3,4,5,6}这种分步的写法是编译不通过的

cout << “ch_array = ” <<ch_array <<endl;//输出Today

                                                                           //解释:数组名是第一个元素的地址。对cout,如果

                                                                           //被提供的是一个字符的地址,会从该字符开始打印

                                                                           //知道遇到空字符为止

cout << “int_array = ” <<int_array  <<endl;//输出首个元素”1”的地址

 

char *ch_ptr;

ch_ptr = new char;//ch_ptr = newchar[size];

ch_ptr = “DOG”;

                            //或: char *ch_ptr;

                            //        ch_ptr = “DOG”;//即可以直接赋值

cout << “ch_ptr = ” << ch_ptr<<endl;//输出 DOG

                                                                 //正常情况下,cout后提供一个指针,将打印地址,但如果

                                                                 //指针类型是char*,将显示字符串

cout << “&ch_ptr = ” <<(int*)ch_ptr <<endl;//显示首个字符元素的地址

//要显示字符串的地址,须强制转换为其他类型指

                                                                                    //针,如int*

int *int_ptr;

int_ptr = new int;//int_ptr = newint[size];//属于创建动态数组

                            //或: int*int_ptr = new int; 或 int *int_ptr = new int[size];

                            //对整型来说,不能像char类型指针那样,未new就使用,以及new分配后

                            //的赋值方式,均不适用。

                            //eg:int *int_ptr; cout << “int_ptr = ”<<int_ptr<<endl;输出显示为0

                            //eg:int*int_ptr; *int_ptr = 10;编译通过,但运行时报Segmentation fault

for(int i = 0; i < 10; i++)

{

 *(int_ptr + i) = i+10;

 cout<< “*(int_ptr + i) = ” << *(int_ptr + i) <<endl;//依次输出指向的值

}

cout << “int_ptr = ” << int_ptr<<endl;//输出首个元素地址

  

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值