一道关于指针的题目请教各位
c语言吧
全部回复
仅看楼主
level 1
滑稽👀🙈
楼主
#include <stdio.h>
void fun(char *s)
{
char a[10];
strcpy(a,"STRING");
s=a;
}
main()
{char *p="PROGRAM";
fun(p);
printf("%s\n",p);
}
运行完fun函数为什么指针p还是指向PROGRAM
2020年02月11日 08点02分
1
level 14
Bubblºe
传p的地址,加俩*
2020年02月11日 08点02分
2
level 5
啊~你干嘛
因为用指针定义的字符串是常量
2020年02月11日 08点02分
3
level 7
泡芙制造者
因为p是p,s是s,s是一个指针,它指向了另一个地址,p没有变
2020年02月11日 08点02分
4
level 11
pengzhenxx
指针是变量,是变量,是变量,重要的事情说三遍。。。
void fun(int s) {
s = 10;
}
int main(){
int a = 5;
fun(a);
print("%d\n", a);
return 0;
}
这么调函数,能改变a的值吗?,显然不能,楼主的代码,和这个代码完全一样。。。
2020年02月11日 08点02分
6
level 11
pengzhenxx
而且楼主代码,是有问题的,
正确的
写法是:既然是变量那么只有传地址才能,改变变量的值,参数自然是指向指针变量的指针变量(二级指针变量)。。。(楼主写法,将造成野指针)
2020年02月11日 09点02分
7
level 12
一周休七日
参数传递的实际:fun(s=p),然后你函数内部有s=a,这对p有何相关?
2020年02月11日 09点02分
8
1