在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则是另一种类型。
指针是指向地址的,地址大小是
相关问答:
以前在VC里面建一个工程,都只用一个 .c 文件,昨天在一个工程里用了两个 .c文件了,遇到问题了,请大家指点。比如:
File1.c Fil ......
想知道每条指令或函数的系统消耗。比如系统执行int a=0;的开销是多少。有没有类似的文档之类的。不要和我说用什么clock()函数来测试。我想要相关总结好的文档
先反汇编,然后拿着cpu的指令手册查每条指令的时间周期 ......
问一下:
#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 ......
现在谭浩强的C语言已经快学忘了,但都是很基础的东西感觉,不能干什么,要想再提升接下来干点啥好
编点小工具,再学数据结构
看看课后习题
如果学c的话,看《the c programming language》,是c语言的 ......