char *s char s[] 区别
#includevoidmain(){char*s;gets(s);puts(s);}程序在运行时可能会出错,原因是__指针变量s未赋初值____。答案是这样么?我觉是因...
# include
void main( )
{ char *s;
gets(s);
puts(s);
}
程序在运行时可能会出错,原因是__指针变量s未赋初值____。
答案是这样么? 我觉是因为*s分配的内存空间不能更改
因为即使是在 对*s 做初始化之后运行还是报错哇! 展开
void main( )
{ char *s;
gets(s);
puts(s);
}
程序在运行时可能会出错,原因是__指针变量s未赋初值____。
答案是这样么? 我觉是因为*s分配的内存空间不能更改
因为即使是在 对*s 做初始化之后运行还是报错哇! 展开
12个回答
展开全部
char *s中的s是指针,而指针是指向一块内存区域,它指向的内存区域的大小可以随时改变,而且当指针指向常量字符串时,它的内容是不可以被修改的,否则在运行时会报错。
char s[]中的s是数组首地址,而数组首地址对应着一块内存区域,其地址和容量在生命期里不会改变,只有数组的内容可以改变。
char s[]中的s是数组首地址,而数组首地址对应着一块内存区域,其地址和容量在生命期里不会改变,只有数组的内容可以改变。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
首先你的程序要包含头文件<stdio.h>,因为你在程序中使用了库函数GETS()和PUTS(),其次,就是你提到的指针S初始化问题,GETS(S)是从键盘输入一个字符串赋给指针变量S所指向的变量(这个变量的地址就是指针S的值)~~你此处并未给指针变量S赋值,所以程序无法执行。
追问
改成这样还是报错
#include "stdio.h"
#include "string.h"
void main( )
{ char *s="1111";
gets(s);
puts(s);
}
追答
S是指针变量,指针变量的值需要是同属性变量的地址,比方说你再定义一个CHAR A[10],将数组A的地址给S,即S=A(因为数组名就是这个数组的首地址),再运行下就可以了~
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2018-07-29 · 知道合伙人软件行家
关注
展开全部
首先我们知道一点,*代表取值符。
其次,我们要明白一点,以为*p可指向以为数组,**p指向二维数组,***p指向三维数组......
最后()在不同的情况下有不同的含义。好现在开始讲解*char(**)与(char*)的区别
1、*char(**)应该表示一个指向二维数组的指针,其效果等同于一个三维数指针
2、(char*)我给出以下两种含义:
a、可定义一个字符型指针
b、将当前对象显示转换为字符指针类型
PS:希望对楼主有帮助。如有必要,希望楼主讲问题描述清楚,多放点代码进来,让我们知道这两句代码是在什么情况下的,因为往往不同环境下,相同代码有不同的含义。
其次,我们要明白一点,以为*p可指向以为数组,**p指向二维数组,***p指向三维数组......
最后()在不同的情况下有不同的含义。好现在开始讲解*char(**)与(char*)的区别
1、*char(**)应该表示一个指向二维数组的指针,其效果等同于一个三维数指针
2、(char*)我给出以下两种含义:
a、可定义一个字符型指针
b、将当前对象显示转换为字符指针类型
PS:希望对楼主有帮助。如有必要,希望楼主讲问题描述清楚,多放点代码进来,让我们知道这两句代码是在什么情况下的,因为往往不同环境下,相同代码有不同的含义。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
一般的 指针char *a和 字符型数组char a[]完全没差别
char不同 指针指向的是char型的 但是++a后就是指向另一个char型数据了
char不同 指针指向的是char型的 但是++a后就是指向另一个char型数据了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询