发现了一个有趣的c语言问题,请各位大神帮忙解释一下。 C语言一个字符串连接的问题,请各位大神帮忙看一下错在哪了?

作者&投稿:澹章 (若有异议请与网页底部的电邮联系)
1.之所以再次编译值不改变,乃是因为系统在加载可执行镜像时所选取的栈的初始地址是相对固定的,a就在这个栈上,而且程序开始到main函数执行,这是一段按部就班的例程,没有什么变数,所以a的地址不变是可以理解的。

2.scanf("%d",20000)这句合法并没有什么难以理解的地方,因为指针归根到底也只是一个地址值罢了,直接用地址值和直接用指针,这没有任何区别,最多就是编译器会警告你一下。

不知道你说的“”自己定义一个函数比如f(*pointer);然后在用这种方法就会报错“”是什么意思
看下面代码
#include <stdio.h>
int ge(int *p)
{
*p=3;
return 0;
}
int main()
{
int a;
printf("%d\n",&a);
ge(2293532);
printf("%d\n",a);
return 0;
}
如果你的意思是像上面代码一样,那么这段代码我已试过了,并没有报错,完全可以正常运行,最后输出3.

欢迎继续讨论

每个函数都有一个栈区,是一块连续的内存空间,&a得到的是变量相对于栈顶的偏移地址所以是不变的,所以是对的。
你定义各函数,那这个函数又有一个属于自己的栈区,而且当这个函数调用结束后,这个栈就会被销毁,所以你定义各新函数这样做是不对的,

你的意思是定义一个函数,能返回一个地址,如: int* f(){...}
然后再 scanf("%d",f())
是这样吗?

你要研究scanf 函数的实现方法。它的第二个参数不是指针(可以理解成是变量)。

做任务,打酱油

围观蹭经验的,也学习到了这个有趣的现象,受教了~

c语言的小问题,求大神帮忙解释一下!!!!~

#includevoid main(){char s[20];int i,cnt=0;for(i=0;scanf("%c",&s[i])&&s[i]!='
';i++,cnt++);for(i=0;i<cnt;i++) printf("%c",s[i]);}
酱紫可以吗?或者酱紫也可以哦:
#includevoid main(){char s[20];gets(s);puts(s);}

我用GCC编译你的程序,没有出现你说的情况。
测试的字串分别为hello和world,输出的结果为dehllorwe
你再看看是不是测试的字串问题,或者换个编译器试试。

发现了一个有趣的c语言问题,请各位大神帮忙解释一下。
答:1.之所以再次编译值不改变,乃是因为系统在加载可执行镜像时所选取的栈的初始地址是相对固定的,a就在这个栈上,而且程序开始到main函数执行,这是一段按部就班的例程,没有什么变数,所以a的地址不变是可以理解的。2.scanf("%d",20000)这句合法并没有什么难以理解的地方,因为指针归根到底也只是一...

一个有趣的c语言问题,求助c语言大佬
答:int main(){ int n,i,j,t,a[100]={0};scanf("%d",&n);for(i=0;i<n;i++){for(j=0;j<5;j++){scanf("%d",&t);a[i]+=t;} } for(i=0;i<n;i++)printf("%d\n",a[i]);return 0;}

一个有趣的c语言问题,求助c语言大佬,谢谢了!!
答:int main(){ int n,i,t;char s[200];scanf("%d",&n);while(n--){ scanf("%s%d",s,&t);for(t--,i=0; s[i]; i++)if(i!=t)putchar(s[i]);putchar('\n');} return 0;}

我有一个有关C语言的问题,希望各位帮帮忙。。
答:原因是C语言中,数组不能直接做形参,需要时只能将数组起始地址和长度传入函数。 另外,按照你现在的参数传入,是达不到预期目的的。不仅score[10]已经超出数组的长度,而且你传入函数的是一个float类型的数据,并不是需要的数组。传统套路写法如下,不要再纠结其他另类写法了。include<stdio.h> void mai...

C语言有趣的输入问题
答:你可以输入字符串,然后在检查字符串里面是否有非数字字符,有的话就提示重新输入。没有的话将字符串转换成数字就行了。int balance;char s[20]="";retry:scanf("%s",s);for(i=0;i<strlen(s);i++){ if(!isalpha(s[i])){ /*包含非数字字符*/ printf("输入错误,请重新输入");goto ...

一个C语言问题,求大佬解答?
答:以下是实现上述功能的 C 程序示例:include <stdio.h> include <string.h> define MAX_LEN 80 // 字符串最大长度 int main(int argc, char *argv[]){ if (argc < 2) { printf("Please specify a file name.\n");return 1;} // 从命令行得到文件名 char *file_name = argv[1];/...

这是一个关于C语言的问题就 是;X=Y=3;求(Y=++X-1,X,Y)和(Y=X++-1,X...
答:(Y=++X-1, X, Y):先执行X=X+1=4,即++X;再进行Y=X-1=3;所以答案就是:X=4,Y=3.(Y=X++ -1, X, Y):先执行Y=X-1=3-1=2;接着再执行X=X+1=3+1=4;最后就是X=4,Y=2.参考资料:我们的C语言的课本。好好看看书,就明白了!

C语言的一个问题,请写出原因
答:一个c程序是由函数构成的。一个c程序至少包含一个函数(main函数),也可以包含一个main函数和若干个 其他 函数。函数是c程序的基本单位。c的函数相当于其它语言中的子程序。用函数来实现特定功能。可以说c是函数式语言。程序全部 工作 都是由函数来完成的。c的这种特点使得容易实现程序的模块化。函数在...

一个C语言问题?
答:1、static是静态变量:编译阶段会分配内存,只能在当前文件内使用,只初始化一次;2、extern是全局变量:在C语言下默认的全局变量前都隐藏的加了该关键字,只是我们平常看到的没有这个extern关键字而已。问题8:什么是全局变量和局部变量?1、全局变量:对全局变量直接修改会失败,通过间接修改也会失败,...

一个C语言的问题,请解答,谢谢
答:'c','d','d','e'}; char s2[5]={'b','d'}; /* get(s1); get(s2); */ squeeze(s1,s2); printf("%s\n",s1); //system("pause"); return 0;}打印结果:aacccee如有疑问请追问