我是C语言的新学习者,我的问题是指针.到目前为止,我学习和搜索指针只能存储其他变量的地址,但不能存储实际值(如整数或字符).但是在下面的代码中,char指针c实际存储了一个字符串.它执行时没有错误,并将输出作为"名称".
#include <stdio.h>
main()
{
char *c;
c="name";
puts(c);
}
Run Code Online (Sandbox Code Playgroud)
任何人都可以解释一个指针如何存储没有任何内存的字符串,或者是否创建了创建它的内存以及可以创建多少大小的内存.
我尝试使用整数类型指针
#include <stdio.h>
main()
{
int *c;
c=10;
printf("%d",c);
}
Run Code Online (Sandbox Code Playgroud)
但它给出了一个错误
cc test.c -o test
test.c: In function ‘main’:
test.c:5:3: warning: assignment makes pointer from integer without a cast [enabled by default]
c=10;
^
test.c:6:2: warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘int *’ [-Wformat=]
printf("%d",c);
^
Run Code Online (Sandbox Code Playgroud)
指针存储变量的地址然后为什么整数指针与字符指针不同.
如果有什么我缺少关于指针plz解释.
在C中查找结构的大小
struct student
{
char name;
int age;
float weight;
};
main ()
{
int i,j,k,l;
struct student s1;
i=sizeof(s1.name);
j=sizeof(s1.age);
k=sizeof(s1.weight);
l=sizeof(s1);
printf ("\n size of name %d",i);
printf ("\n size of age %d",j);
printf ("\n size of weight %d",k);
printf ("\n size of s1 %d",l);
printf("\n");
}
Run Code Online (Sandbox Code Playgroud)
我的输出是:
size of name 1
size of age 4
size of weight 4
size of s1 12
但结构大小应该是其成员大小的总和.为什么我得到12而不是9作为结构变量s1的大小.有人可以解释什么是错的.
我是JAVA语言的新学习者.在JAVA中,Object类是类层次结构中的根类(或)最顶级的超类(每个类都是Object的子类).因此,我们创建的每个类都有Object类的11个方法(如JAVA API中所述),我们可以使用它们,就像toString()方法一样.
但是该toString()方法的定义使用了一个getName()未在Object类中定义的方法.(我知道该toString()方法使用该getName()方法,因为我使用jd-gui来查看我的电脑中安装的Object.class文件的源代码.)
如果我们创建一个java文件
class test {
public static void main(String args[]) {
test t = new test();
System.out.println(t.getClass().getName());
/* Don't understand how I am able to use getName() method without extending any other
*class containing *getName() method.*/
}
}
Run Code Online (Sandbox Code Playgroud)
上面给出了"test"作为输出而没有错误.
来到Object类它是根类,所以它不扩展任何其他类并且做任何工作它应该定义自己的方法.
我的问题是,我们定义的Object类和类如何能够在不在类中定义方法的情况下使用此方法getName()?
除了Object类之外,是否还扩展了其他类?