C语言中指针的长度!

Python010

C语言中指针的长度!,第1张

记住32位下的指针 都是4个字节可以简单的这么理解:一个基本的数据类型(包括结构体等自定义类型)加上“*”号就构成了一个指针类型的模子。这个模子的大小是一定的,与“*”号前面的数据类型无关。“*”号前面的数据类型只是说明指针所指向的内存里存储的数据类型。所以,在 32位系统下,不管什么样的指针类型,其大小都为 4byte。

首先,两个sizeof所求的东西完全不一样,另外sizeof是编译的时候就求出长度,非运行的时候。sizeof(s)是求指针长度,因为变量定义的是char *s,这个长度可能是2,可能是4,还可能会是8,是由编译的时候决定的,比如VC6.0编译器长度就是4,因为VC6.0是32位的编译器,它的地址长度是32位表示,4个字节。gcc64位编译器则长度是8,64位系统地址表示长度64位8字节。TC是16位编译器,所以长度是2。综上sizeof(s)与电脑位数和总线有关,但是最重要的是与编译器有关,win64位的系统也可以运行32位的程序,VC6.0编译的程序在win64上运行,sizeof长度依然是4。如果程序gcc64位编译的,则不能运行在XP32位的系统上sizeof(*s)是求字符的长度,长度为1,不管什么编译器长度不变。

。。。你函数都用错了,不要用fgets读取文件里的单词,用fscanf(infile,"%s",buffer),根据%s的特性,这个语句只会读取单词,不会读取空格,另外你的标题。我没看懂,获取字符型指针长度? 这个指针长度你是获取不了的,因为指针存的是地址,那么任何一个类型的数据都可能会放在地址很大的内存上,所以对于指针来说,要求就是必须能容纳下很大的地址,所以不管是指向哪个类型的指针 他们占的字节都是一样的,而且是4个字节