鱼C论坛

 找回密码
 立即注册
查看: 1142|回复: 4

[已解决]关于指针数组

[复制链接]
发表于 2023-11-28 10:21:34 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
char str[20];
int *p=str;

大神们,这个指针变量p指向的是整个数组str还是str[0]
最佳答案
2023-11-28 10:25:45
-kasha 发表于 2023-11-28 10:25
int N = 5;
char str;
声明字符数组 必须要这个格 ...

不好意思,我之前的回答有误。对于声明字符数组,正确的格式应该是`char str[N]`,其中`N`是你想要的数组大小。我之前的回答中确实存在错误,请忽略。

关于你的第二个问题,是的,指针可以指向整型数组。你可以使用以下代码来声明一个指向整型数组的指针变量:
int arr[5] = {1, 2, 3, 4, 5};  // 声明并初始化一个整型数组int *p = arr;  // 声明一个指向整型数组的指针变量,将其指向数组的起始位置
在上面的示例中,我们声明了一个大小为5的整型数组`arr`,并使用指针变量`p`将其指向整个数组的起始位置。现在,你可以通过对指针变量`p`进行操作来访问和修改整个整型数组。

以下是一个完整的示例代码:
#include <stdio.h>int main() {    int arr[5] = {1, 2, 3, 4, 5};  // 声明并初始化一个整型数组    int *p = arr;  // 声明一个指向整型数组的指针变量,将其指向数组的起始位置    // 使用指针变量访问和修改整型数组    for (int i = 0; i < 5; i++) {        printf("%d ", *(p + i));    }    return 0;}
这个示例代码声明了一个大小为5的整型数组`arr`,使用指针变量`p`来访问和修改整个整型数组,并使用循环打印出了数组的内容。输出结果是`1 2 3 4 5`。

希望能解决你的问题!如果还有其他疑问,请随时提出。

以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-11-28 10:21:59 | 显示全部楼层
首先,你声明的变量`str`是一个字符变量,不是字符数组。如果你想声明一个字符数组,应该使用`char str[N]`的形式,其中`N`是数组的大小。

接下来,对于你的问题,你在声明指针变量时,将其指向了`str`。这意味着指针变量`p`指向了`str`所占内存空间的起始位置。

然而,需要注意的是,`str`只是一个字符变量,它只占用了一个字节的内存空间。所以,在这种情况下,指针变量`p`只指向了一个字节的内存空间。

如果你想要声明一个指向字符数组的指针变量,可以这样做:
char str[N];     // 声明一个字符数组char *p = str;   // 声明一个指向字符数组的指针变量,将其指向字符数组的起始位置
在这个示例中,指针变量`p`指向了整个字符数组`str`。你可以通过对指针变量`p`进行操作来访问和修改整个字符数组。

以下是一个完整的示例代码:
#include <stdio.h>int main() {    int N = 5;    char str[N];     // 声明一个字符数组    char *p = str;   // 声明一个指向字符数组的指针变量,将其指向字符数组的起始位置    // 使用指针变量访问和修改字符数组    for (int i = 0; i < N; i++) {        *(p + i) = 'A' + i;    }    // 打印字符数组的内容    for (int i = 0; i < N; i++) {        printf("%c ", *(p + i));    }    return 0;}
这段代码声明了一个大小为5的字符数组`str`,并使用指针变量`p`来访问和修改整个字符数组。然后,使用循环打印出了字符数组的内容。输出结果是`A B C D E`。

希望能帮助到你!如果还有其他问题,请随时提出。

以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-11-28 10:25:25 | 显示全部楼层
FishC_GPT 发表于 2023-11-28 10:21
首先,你声明的变量`str`是一个字符变量,不是字符数组。如果你想声明一个字符数组,应该使用`char str[N]` ...

int N = 5;
char str[N];
声明字符数组 必须要这个格式嘛?
另外我问下指针能不能指向整型数组?
谢谢大神
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-11-28 10:25:45 | 显示全部楼层    本楼为最佳答案   
-kasha 发表于 2023-11-28 10:25
int N = 5;
char str;
声明字符数组 必须要这个格 ...

不好意思,我之前的回答有误。对于声明字符数组,正确的格式应该是`char str[N]`,其中`N`是你想要的数组大小。我之前的回答中确实存在错误,请忽略。

关于你的第二个问题,是的,指针可以指向整型数组。你可以使用以下代码来声明一个指向整型数组的指针变量:
int arr[5] = {1, 2, 3, 4, 5};  // 声明并初始化一个整型数组int *p = arr;  // 声明一个指向整型数组的指针变量,将其指向数组的起始位置
在上面的示例中,我们声明了一个大小为5的整型数组`arr`,并使用指针变量`p`将其指向整个数组的起始位置。现在,你可以通过对指针变量`p`进行操作来访问和修改整个整型数组。

以下是一个完整的示例代码:
#include <stdio.h>int main() {    int arr[5] = {1, 2, 3, 4, 5};  // 声明并初始化一个整型数组    int *p = arr;  // 声明一个指向整型数组的指针变量,将其指向数组的起始位置    // 使用指针变量访问和修改整型数组    for (int i = 0; i < 5; i++) {        printf("%d ", *(p + i));    }    return 0;}
这个示例代码声明了一个大小为5的整型数组`arr`,使用指针变量`p`来访问和修改整个整型数组,并使用循环打印出了数组的内容。输出结果是`1 2 3 4 5`。

希望能解决你的问题!如果还有其他疑问,请随时提出。

以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-11-28 13:04:04 | 显示全部楼层
str[0]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-23 03:32

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表