指针的区别!
char *a和int *a的区别是什么?今天刚看到。想不明白:handshake 指针指向的数据类型不一样。 如果定义char *a,那么a指针指向的是数据类型必须是char的;如果定义int *a,那么a指针指向的是数据类型必须是int的;比如intnum = 65;char *a = # printf("%c",*a)我试了一下这个,运行结果还是A,但还是遵循一下int型指针指向int型数据。但是 char ch = 'A'; int *num = &ch; printf("%d",*num);却不正确,你可以试一下。 指针的大小都是4字节,类型定义只是对指针变量指向的内容做的声明,比如int *a,指向某一变量x,而这个x必须是int型,其实这个规定 就是为了防止获取的数据是正确的.================================================================
举个例子,声明的两个指针变量char *a和int *b,以及char A和int B,
前面说了指针变量无论什么类型都是四字节,转到此例,我们用下划线代表一位,A只有一字节=8bit,即_ _ _ _ _ _ _ _,而B有4字节=32bit,_ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _
如果我们用*a指向A的首地址,而这两个变量的容量是一样的,所以用指针获取数据不会出错,如果*a指向B,那么同理,只能去到B的前8位二进制数据,,这样取的值就不对了.这样是一定会出错的,因此这也就成了语法规则.
页:
[1]