易截截图软件、单文件、免安装、纯绿色、仅160KB

在C里指针是long还是int?

在The C Programming Language里有这么一段代码

C/C++ code:
void swap(int *px, int *py) /* interchange *px and *py */
{
int temp;
temp = *px;
*px = *py;
*py = temp;
}


这里定义了一个临时变量temp,声明为int型,用它来做两个指针交换的中介。这样写是不是有问题?是不是应该改成这样?

int * temp;

或者改成这样?

long temp;
这里交换的是指针指向的内容

而不是指针本身

原来写法没有问题

指针本身与操作系统的位数有关,即与寻址的字长有关,。。。。32位操作系统是32位长即四个字节,如果是64位操作系统,则要64位即8字节。。。。。。。。。

temp 和 *px 都是int类型,所以可以做这种赋值 temp = *px;
指针就是指针,它不是long也不是int,虽然它会和某些类型的大小相同并且可以互相转换,但是毕竟不是同一类型。


如果一定要把指针转换成某种整数类型,大多数情况下用unsigned long比较好,但也不是肯定正确,依赖于操作系统和编译器。

LZ定义的是int类型,那么指针类型就确定了,所以不存在long和,int的区别
对于
int temp;
temp = *px;
*px = *py;
*py = temp;
它指的是交换指针里面的内容,所以用到了中间变量temp,因为px是指向int类型的指针变量,所以temp是int类型,当然你可以通过类型转换转换成long类型

在C/C++里,指针既不是int,也不是long,指针是一种类型,int、long则是另一种类型。

指针是指向地址的,地址大小是


相关问答:

两个C文件的问题

以前在VC里面建一个工程,都只用一个 .c 文件,昨天在一个工程里用了两个 .c文件了,遇到问题了,请大家指点。比如:
File1.c Fil ......

c/c++每条指令和函数的执行时间是多少?

想知道每条指令或函数的系统消耗。比如系统执行int a=0;的开销是多少。有没有类似的文档之类的。不要和我说用什么clock()函数来测试。我想要相关总结好的文档
先反汇编,然后拿着cpu的指令手册查每条指令的时间周期 ......

C 程序问题 (二) - C/C++ / C语言

问一下:
#include <stdio.h>
int main()
{
  char x, y, z;
  int i;
  int a[16];
  for(i=0; i<=16; i++)
  {
  a[i] = 0;
  ......

大家觉得 C Primer Plus 这本书怎么样呢?

用这本书入门怎么样呢  跟谭浩强的相比如何? 谢谢
我把这本看了几篇,确实很好的书。就不要拿它跟 谭 的书比了, 谭 的书要照顾全国读者。

不可同日而语

一个是国外的,一个是国内的

学完c primer ......

C学位你发基础该干啥?

  现在谭浩强的C语言已经快学忘了,但都是很基础的东西感觉,不能干什么,要想再提升接下来干点啥好
编点小工具,再学数据结构

看看课后习题

如果学c的话,看《the c programming language》,是c语言的 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号