本文目录一览:
- 1、关于c语言,地址问题?
- 2、c语言,字符型指针char *s的长度,为什么sizeof(s)与sizeof(*s)的长度为什么不一样?
- 3、C语言中代码长度与什么有关
- 4、c语言中整型的一维数组中每个元素地址的长度为什么会是4个字节??
- 5、c语言指针数组各个元素的地址间隔与什么有关?
- 6、C语言指针的地址范围是多少?
关于c语言,地址问题?
地址和地址上存储的字节是两个不同的概念
内存是按照字节进行编址
可以认为所有字节排成一排,每个字节的编号就是地址值
所以地址是32还是64位与地址上能存多大东西没关系
至于为什么按照字节编址,是因为一个字节可以表示0-255共计256个数字,在很多情况下,比如字符串,用字节就够了
如果按照32位进行编址必然会造成浪费
c语言,字符型指针char *s的长度,为什么sizeof(s)与sizeof(*s)的长度为什么不一样?
首先,两个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,不管什么编译器长度不变。
C语言中代码长度与什么有关
代码长度一般不受限制。
源代码(也称源程序),是指一系列人类可读的计算机语言指令。
源代码是相对目标代码和可执行代码而言的。 源代码就是用汇编语言和高级语言写出来的地代码。目标代码是指源代码经过编译程序产生的能被cpu直接识别二进制代码。可执行代码就是将目标代码连接后形成的可执行文件,当然也是二进制的。
在现代程序语言中,源代码可以是以书籍或者磁带的形式出现,但最为常用的格式是文本文件,这种典型格式的目的是为了编译出计算机程序。计算机源代码的最终目的是将人类可读的文本翻译成为计算机可以执行的二进制指令,这种过程叫做编译,通过编译器完成。
c语言中整型的一维数组中每个元素地址的长度为什么会是4个字节??
不是地址都是四个字节,楼上想说的是指针占四个字节吧。
你这里和书上不一样是因为你们的操作系统不一样。int类型的数组,每一个元素地址占的是一个int类型大小的字节数。为什么一会儿是两个字节,一会儿是四个字节呢,如下:
short、int和long类型都表示整型值,存储空间的大小不同。一般,short类型为半个机器字长(word)长,int类型为一个机器字长,而long类型为一个或两个机器字长(在32位机器中int类型和long类型通常字长是相同的),而在不同的机器位下,所占的字节也是不一样的:
16位系统中,int类型占两个字节(所以书上应该用的是16位系统),32位以上的的系统,基本都是4字节的了,所以你打印出来的是4个字节。
有异议可继续追问!
c语言指针数组各个元素的地址间隔与什么有关?
1、首先,你对地址指针的理解是正确的。它们指向字符所存的内存地址。
2、其次,在不同的运行环境,编译环境下,运行结果是不同的,只能说,你的代码是没问题的,运行结果很难说。
3、典型的结果应该是,每个字符用1个字节+1个字节。所以,应该按顺序分别是:
(2、3、6、5),也就是说,第一个字符需要2个字节存放,第二个字符串要用3个……
注意的是,字串之间会有一个实际值为”0“的数据用以隔开它们,所以,看起来地址间隔比字串的位数多了1位。
4、在我的电脑上,用DEV
C++
工具进行实际编译测试,得到的结果与我上面说的相符。不知道你用的是什么编译和调试工具。
以下是运行截图:
C语言指针的地址范围是多少?
C语言的指针地址范围是4字节空间,即从地址0x00000000~地址0xFFFFFFFF。但其中有些字段是系统保护的或所使用的硬件平台根本就不存在,所以用户指针并不能完全使用这个空间。不过用户不必担心,只要按规范使用指针,系统都会自动正确安排。
C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。
二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言订定了一套完整的国际标准语法,称为ANSI C,作为C语言最初的标准。