C语言 指针 直接字符串变量前加*是什么怎么回事?没有提前定义啊

#include<conio.h>#include<stdio.h>voidfun(char*a){}voidmain(){chars[80];printf("Enter... #include<conio.h>
#include<stdio.h>
void fun(char * a)
{
}
void main ()
{
char s[80];

printf("Enter a string:\n");

gets(s);

fun(s);

printf("The string after deleted:\n")

puts(s);

}
二级C的一套程序设计题,就是不懂为什么变量前面直接加*,也没有定义。不懂是什么意思。
展开
 我来答
真的无奈啊0000
2013-09-15 · TA获得超过577个赞
知道小有建树答主
回答量:279
采纳率:75%
帮助的人:78万
展开全部
加了*就表示这是指针(就是这个变量的存储地址,这是个char(字符)指针,就是只能存储字符类变量的地址)!这道题是传址调用, fun(s);就是把s[80]中的字符串的首地址传给形参a(这里a是字符型指针),之所以这样写,是为了让实参随着形参变而变!C语言:传值调用实参不能随着形参改变而改变,只有传址(地址)调用才能让实参随着形参改变而变!在C++里面和这差不多,但是C++里面引用也能让实参不能随着形参改变而改变!
家高韵冼姝
2019-11-26 · TA获得超过3万个赞
知道大有可为答主
回答量:1.1万
采纳率:29%
帮助的人:593万
展开全部
ps指向"this
is
a
book"的首地址,即第一个元素,但是指针有一个运算就是 加法运算,
ps
+
1
就是 ps的地址 + sizeof(char)
, 后面的sizeof(char)就是偏移地址,c++只所以提供指针的加法运算,这与汇编语言中的offset是一样的。 ps
=
ps
+
10;
就相当于 ps
+
sizeof(char)
*
10,就是加10个字符的地址,它的内容就是字符'b' 没事可以到0x30
百度贴吧 耍耍,这些都是很基础的东西哦。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
随便玩玩2199
2013-09-15
知道答主
回答量:7
采纳率:0%
帮助的人:9974
展开全部
void fun(char * a)

子函数里面不是定义了吗?为什么说没有定义?不理解你的意思

a就是一个*a这个指针指向的地址呀

fun(s); //这是把字符数组s[80]的地址传给子函数并通过子函数进行运算,这里的子函数什么也没有干,就是一个空函数

这个程序输入什么字符串,就输入什么字符串。和那个子函数没有关系,只是让你明白,函数的参数传递可以传递一个地址而已。

以上为个人见解,如有不对之处,欢迎大神指正!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
357029252
2013-09-15 · TA获得超过134个赞
知道小有建树答主
回答量:253
采纳率:0%
帮助的人:149万
展开全部
是指“void fun(char * a)”这里吗?

这样定义是很正常的,基本上子函数的形参都这样定义
处理数组类的函数形参用指针比较方便,数组名即为数组首地址,传递首地址,即传递整个数组,因为数组在内存中是连续存储的。不会出现断点
追问
如果不加那个*会怎么样?会不会导致白搭?为什么?帮我详细说一下。我追加你悬赏。
追答
不定义为指针,就得一个一个传了,很麻烦
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
多澎0ch
2013-09-15
知道答主
回答量:10
采纳率:0%
帮助的人:1.4万
展开全部
你是说fun函数的那个参数char *a 吗?
用在这里表示fun函数调用时需要的参数是一个char类型的指针,也就是地址,这里可以理解为这是一个定义,定义一个char类型的局部指针变量,如main函数里面调用时,fun(s)将字符串的初始地址传入fun函数。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式