c复习:指针(3)

指针数组

Just like:

char* arr [5] ={0};

 arr [o] =(char*)1;

 arr[1]=(char*)2;

 arr[2] =(char*)3;

 arr[3]=(char*)4;

 arr [4]=(char*)5;

or

char a1=’A’;

char a2=’B’;

char a3=’C’;

char a4=’D’;

char a5=’E’;

char* p1 =&a1;

char* p2 =&a2;

char* p3 =&a3;

char* p4 =&a4;

char* p5 =&a5;

char* arr [5] ={p1, p2, p3, p4, p5};

尽量别把地址和指针放到一起,容易崩溃

内存分布情况:

char arr[] = {'c','h','i','n','a'};

printf('%s\n',arr);// s是给定一个地址,让地址往后打印,直到见到0出现地址,但是不包括0,所以要往后补0

char* p1=”if”;//仅收取第一个字符的地址

char* p2 = 'for';

char* p3 = 'while';

char* p4 = 'switch';

char* keyword[] = {'if','for','while','switch'}; // char* keyword[] = {p1,p2,p3,p4};

结构体指针

Just like

struct Arg     

{     

   int a;

   int b;

   int c; 

}     

int main()

{

    Arg*** pArg;

    pArg = (Arg***)100;

    pArg++;//砍*也是四个字节

    printf("%d\n",pArg)

}  //做运算,要砍*了

答案为104

struct Arg     

{     

   int a;

   int b;

   int c; 

}     

int main()

{

    Arg* pArg;

    pArg = (Arg*)100;

    pArg++;//砍掉之后是12个字节

    printf("%d\n",pArg)

}

打印:112

小插曲:内存分布

顶层代码区:存放代码

下一层栈区:存放参数和局部变量

下一层全局变量:可读,可写

下一层常量区:可读不可写

举例:

char* x=”dd”;

char y[]=”dd”;

*(x+1)=”s”;//不可执行,因为x指的是地址,是一个常量,不可修改

y[1]=”s”;// y 是给值地址,要多少给多少,所以可以改

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值