鱼C论坛

 找回密码
 立即注册
查看: 3621|回复: 9

int类型指针可以指向char类型数组吗?

[复制链接]
发表于 2016-1-9 10:28:28 | 显示全部楼层 |阅读模式

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

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

x
这次安徽省C语言二级考试中出现如图的赋值,编译器报错,但是要输出也可以输出。为什么?
QQ截图20160109102658.png
QQ截图20160109102820.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-1-9 12:14:22 | 显示全部楼层
sizfof是什么运算符来的??是不是写错了, sizeof 吧??
int *p 是整形指针,char s[]却是字符数组, p++现在加的是4个字节, char*p  p++才是指向一个字节,这样才对
在int *p中第一次输出的是的内容: "A1B2C3D4E5F6G7H8"是正确的,字符型可以转为整形,整形不一定能转为字符型,但是后面都指到字符串外面去了还能对吗??
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-1-9 12:17:11 | 显示全部楼层
for(p=s;i<sizfof(s);i++)中的sizfof打错了  应该是sizeof才对吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-1-9 12:36:43 | 显示全部楼层
天天向上

评分

参与人数 1鱼币 -5 收起 理由
小甲鱼 -5 请不要无意义灌水!

查看全部评分

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

使用道具 举报

发表于 2016-1-9 16:35:51 | 显示全部楼层
如果我把代码这么写,你是否会清楚一些呢?

  1. #include<stdio.h>

  2. int main()
  3. {
  4.         char s[] = "FishC";
  5.         int *p;
  6.         
  7.         p = s;
  8.         
  9.         printf("%d %c\n", sizeof(s[0]), s[0]);
  10.         printf("%d %c\n", sizeof(p[0]), p[0]);

  11.         return 0;
  12. }
复制代码

因为 char 类型本身就是一个特殊的整型,所以把它放到更大的坑里,肯定可以正常显示啦~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-1-10 15:39:23 | 显示全部楼层
本帖最后由 10空间 于 2016-1-10 19:56 编辑

甲鱼兄这是我运行你的代码时给的
d:\vc6.0\16_1_2\树.cpp(8) : error C2440: '=' : cannot convert from 'char [6]' to 'int *'
        Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
执行 cl.exe 时出错.

树.exe - 1 error(s), 0 warning(s)
注:编译器是VC6.0,文件名字是乱敲的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-1-10 16:43:04 | 显示全部楼层
小甲鱼 发表于 2016-1-9 16:35
如果我把代码这么写,你是否会清楚一些呢?

E:\python\C\160110\03.c||In function 'main':|
E:\python\C\160110\03.c|8|warning: assignment from incompatible pointer type [enabled by default]|
||=== Build finished: 0 error(s), 1 warning(s) (0 minute(s), 0 second(s)) ===|
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-1-11 19:43:48 | 显示全部楼层
nt *p 是整形指针,char s[]却是字符数组, p++现在加的是4个字节, char*p  p++才是指向一个字节,这样才对
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-1-11 20:42:52 | 显示全部楼层
C系列的括号 好容易出错啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-10-24 01:29:22 | 显示全部楼层
sizeof s 结果是 17

p++ 如果int是4个字节
只能安全的进行4次 ++
(一次p++ 或跨越4个字节)
所以 后面的 17-4 次 ++ 都是数组越界
printf企图读取越界指针的数据
作死
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-19 23:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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