琴长不过时光 发表于 2020-3-5 17:41:41

小白求助 关于数组指针的定义

int(*pMyArray)定义了一个指向数组的指针 pMyArray指向的数组是5个元素 数组类型是int
pMyArray = &arr3
为啥nt arr3;改成nt arr3;都可以使用?

#define _CRT_SECURE_NO_WARNINGS
#include "stdio.h"
#include "stdlib.h"
#include "string.h"

void main()
{
        int i;
        int(*pMyArray);//直接定义一个指向数组的数组指针变量
        int arr3;//这个数组有5个元素
        pMyArray = &arr3;
        for (i = 0; i < 5; ++i)
        {
                (*pMyArray) = i + 1;
        }
        for (i = 0; i < 5; ++i)
        {
                printf("%d ", (*pMyArray));
        }
        system("pause");
}

qiuyouzhi 发表于 2020-3-5 17:47:58

那你觉得为什么会报错呢?
小甲鱼老师讲过:
当数组的范围过大时,剩下的空间将被
'\0'代替

4goodworld 发表于 2020-3-5 21:13:35

对 pMyArray 而言,它就是一个指针变量,或者说它就是一个int* 的指针,谁赋值给它,它就代表谁
就好像
int a=1
后来a=2
请问,a能=2吗?可以
那int能干的时候,int*不能干?
和尚摸得,我摸不得?哈哈

琴长不过时光 发表于 2020-3-6 12:47:08

4goodworld 发表于 2020-3-5 21:13
对 pMyArray 而言,它就是一个指针变量,或者说它就是一个int* 的指针,谁赋值给它,它就代表谁
就好像
i ...

谢谢大佬了

琴长不过时光 发表于 2020-3-8 12:13:55

4goodworld 发表于 2020-3-5 21:13
对 pMyArray 而言,它就是一个指针变量,或者说它就是一个int* 的指针,谁赋值给它,它就代表谁
就好像
i ...

int(*pMyArray)那大哥 请问 这个pMyArray是不是定义了一个指向包含5个整数的数组指针变量
然后pMyArray 等于别的数组名,就是把指向的空间给改变了?
还有 为啥pMyArray = &arr3;pMyArray 为啥是二级指针呀?

4goodworld 发表于 2020-3-8 14:25:26

琴长不过时光 发表于 2020-3-8 12:13
int(*pMyArray)那大哥 请问 这个pMyArray是不是定义了一个指向包含5个整数的数组指针变量
然后pMyArr ...

int(*pMyArray)那大哥 请问 这个pMyArray是不是定义了一个指向包含5个整数的数组指针变量
然后pMyArray 等于别的数组名,就是把指向的空间给改变了?

我个人的观点,指针的用来表示某个内存地址,数组的读取是通过数组的首地址来偏移操作的,地址=地址,有啥问题?

还有 为啥pMyArray = &arr3;pMyArray 为啥是二级指针呀?
pMyArray 如果它是一级的话,arr3是几级?&arr3 这个取地址操作后的地址是什么呢?

琴长不过时光 发表于 2020-3-8 17:07:47

4goodworld 发表于 2020-3-8 14:25
int(*pMyArray)那大哥 请问 这个pMyArray是不是定义了一个指向包含5个整数的数组指针变量
然后pMyArr ...

好的谢谢了

琴长不过时光 发表于 2020-3-8 17:10:36

4goodworld 发表于 2020-3-8 14:25
int(*pMyArray)那大哥 请问 这个pMyArray是不是定义了一个指向包含5个整数的数组指针变量
然后pMyArr ...

太感谢你了 我弄明白了数组名arr3是一级指针 然后 取地址 就是二级指针
页: [1]
查看完整版本: 小白求助 关于数组指针的定义