鱼C论坛

 找回密码
 立即注册
查看: 2627|回复: 10

[已解决]关于C指针与数组的问题

[复制链接]
发表于 2022-8-27 16:26:26 | 显示全部楼层 |阅读模式

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

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

x
在带你学C带你飞课程的s1e22课中,我有一个问题

char *str = "I love Fishc.com"

char *str = "I love Fishc.com"

关于这一句
char *str = "I love FishC.com!"
这一句应该要怎么理解?为什么一个指向字符的指针可以赋值一个字符串?(大佬勿喷)
我可不可以认为,这句代码跟声明一个 str[]="I love..." 的字符串是等价的?
最佳答案
2022-8-27 19:07:29
①char虽然是字符型的,但是并不代表只能用char来存储字符,int,float也可以存,ascll码表的范围是1~127,所以只要数据类型大小范围超过127就可以存字符,但是不一定能显示,而且数据类型只是一个大小的区别,和有符号无符号的区别。
②不是赋值字符串,是把这个字符串的首地址给了这个指针,和我代码这句是一个意思char *P=arr;
③不是等价的,数组是把你的字符串都存了起来,是数据存了起来,而指针只存地址
#include "stdio.h"
int main()
{
        char arr[] = "I love FishC.com!";
        char *P=arr;
        printf("%c\r\n",arr[3]);
        printf("%c\r\n",*(P+3)); 
        printf("\r\n");
        printf("%s\r\n",arr);
        printf("%s\r\n",P);  
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-8-27 19:07:29 | 显示全部楼层    本楼为最佳答案   
①char虽然是字符型的,但是并不代表只能用char来存储字符,int,float也可以存,ascll码表的范围是1~127,所以只要数据类型大小范围超过127就可以存字符,但是不一定能显示,而且数据类型只是一个大小的区别,和有符号无符号的区别。
②不是赋值字符串,是把这个字符串的首地址给了这个指针,和我代码这句是一个意思char *P=arr;
③不是等价的,数组是把你的字符串都存了起来,是数据存了起来,而指针只存地址
#include "stdio.h"
int main()
{
        char arr[] = "I love FishC.com!";
        char *P=arr;
        printf("%c\r\n",arr[3]);
        printf("%c\r\n",*(P+3)); 
        printf("\r\n");
        printf("%s\r\n",arr);
        printf("%s\r\n",P);  
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2022-8-27 22:41:37 | 显示全部楼层
温良先生 发表于 2022-8-27 19:07
①char虽然是字符型的,但是并不代表只能用char来存储字符,int,float也可以存,ascll码表的范围是1~127, ...

有点理解你的意思了,容我再想想消化
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-8-28 12:00:30 | 显示全部楼层
温良先生 发表于 2022-8-27 19:07
①char虽然是字符型的,但是并不代表只能用char来存储字符,int,float也可以存,ascll码表的范围是1~127, ...

时代的.jpg.png
请问 我用dev-c++来编写这一个程序,但出现了警告,为什么?
是两种语言本身的差异吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-8-28 15:49:37 | 显示全部楼层

回帖奖励 +1 鱼币

额外减小 发表于 2022-8-28 12:00
请问 我用dev-c++来编写这一个程序,但出现了警告,为什么?
是两种语言本身的差异吗

你学的是C语言还是C++ ?
C语言和C++是不一样的
告诉我,C语言的源文件后缀是什么?
是 .cpp 吗?
C++中的字符串常量的类型可不是 char *
C++中的字符串常量的类型是 const char *

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
额外减小 + 1 + 1 我错了 马上下载C的编译器

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2022-8-28 16:45:50 | 显示全部楼层
学习了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-8-28 16:46:40 | 显示全部楼层

回帖奖励 +1 鱼币

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-8-28 23:53:27 | 显示全部楼层
人造人 发表于 2022-8-28 15:49
你学的是C语言还是C++ ?
C语言和C++是不一样的
告诉我,C语言的源文件后缀是什么?

tql 原来是这样。
谢谢您   
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-8-28 23:58:44 | 显示全部楼层
人造人 发表于 2022-8-28 15:49
你学的是C语言还是C++ ?
C语言和C++是不一样的
告诉我,C语言的源文件后缀是什么?

请问一下这位大佬
我是学C,可不可以直接就用dev-C++编译后缀是.c的源文件,会出现问题吗?(dev...是否支持C语言,如果是的话,我就不下载其他C编译器了)
谢谢大佬
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-8-29 00:01:31 | 显示全部楼层
额外减小 发表于 2022-8-28 23:58
请问一下这位大佬
我是学C,可不可以直接就用dev-C++编译后缀是.c的源文件,会出现问题吗?(dev...是否 ...

不会出问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2022-8-29 00:14:46 | 显示全部楼层

谢谢大佬
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-26 08:51

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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