C语言高级编程:指针和数组

1. 说明:

1)变量p本身的地址在编译时确定,它是不变的;变量p存的内容是一个地址,在运行时才能确定,它是变化的

2)数组arr的地址在编译时确定,它是不变的;数组arr村的内容是一个数据

3)指针变量p能以数组的方式访问;数组arr能以指针的形式访问

 

 

1.1 代码:

#include <stdio.h>


int main(void)
{
    int i = 10;
    int *p = &i;
    int arr[5];

    p[0] = 1;
    *(arr+0) = 2;

    printf("&i = %p\n", &i);
    printf("p = %p, &p = %p\n", p, &p);
    printf("arr = %p, &arr = %p\n", arr, &arr);
    printf("p[0] = %d, *(arr+0) = %d\n", p[0], *(arr+0));

    return 0;
}

 

1.2 结果:

baoli@ubuntu:~/c$ ./a.out
&i = 0x7ffe9c0feb04
p = 0x7ffe9c0feb04, &p = 0x7ffe9c0feb08
arr = 0x7ffe9c0feb10, &arr = 0x7ffe9c0feb10
p[0] = 1, *(arr+0) = 2

 

2. 说明:

1)定义为数组时,不能声明为指针

2)定义为指针时,不能声明为数组

 

2.1 代码:

#include <stdio.h>

int array[5];
extern int *array;

int *p;
extern int p[];

int main(void)
{
    return 0;
}

 

2.2 编译:

baoli@ubuntu:~/c$ gcc test.c -g
test.c:4:13: error: conflicting types for ‘array’
extern int *array;
             ^
test.c:3:5: note: previous declaration of ‘array’ was here
int array[5];
     ^
test.c:7:12: error: conflicting types for ‘p’
extern int p[];
            ^
test.c:6:6: note: previous declaration of ‘p’ was here
int *p;
      ^

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hello_courage

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值