我是装配新手,因此想要了解更多关于搬迁的概念.
如果有人可以用初学者级别的例子来解释,那将会很棒.
main()
{
char a[] = "Visual C++";
char *b = "Visual C++";
printf("\n %d %d",sizeof(a),sizeof(b));
printf("\n %d %d",sizeof(*a),sizeof(*b));
}
Run Code Online (Sandbox Code Playgroud)
sizeof(a)给我输出:( 11 即字符串的长度)
为什么会这样?
为什么不输出sizeof(a)= 4因为当我尝试打印a它时给我一个地址值,因此是一个整数?
关于在C中使用extern关键字和变量,我有一些疑问.我确实浏览了与此问题相关的链接.但是,还有一些我没有收集得很好的东西
#include<stdio.h>
main( )
{
extern int i;
printf ( "\n%d ",i) ) ;
}
int i = 31 ;
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,如何在定义语句之前打印?
现在在以下代码中:
#include<stdio.h>
int x = 21 ;
main( )
{extern int i;
i=20;
printf ( "\n%d ", i ) ;
}
Run Code Online (Sandbox Code Playgroud)
不是声明"i = 20;" 定义声明?我得到一个错误.是因为我正在尝试更改其他源文件中定义的变量吗?如果是这种情况,语句如何"int i = 31;" 在最顶级的代码片段中使用权?
另外,我读到,"int i;" 是一个定义.我真的不怎么做.
在以下代码中,
#include <stdio.h>
int main()
{
int i = 5;
scanf("%s", &i);
printf("%d\n", i);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我取输入字符串存储在地址i.当我尝试打印变量时i,我得到一些数字.
输入示例:
hello
Run Code Online (Sandbox Code Playgroud)
输出:
1819043176
Run Code Online (Sandbox Code Playgroud)
这是什么数字,到底发生了什么?
c ×3
arrays ×1
assembly ×1
declaration ×1
definition ×1
extern ×1
int ×1
linker ×1
pointers ×1
relocation ×1
scanf ×1