c语言编程9个经典提问及解答

来源:本站
导读:目前正在解读《c语言编程9个经典提问及解答》的相关信息,《c语言编程9个经典提问及解答》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《c语言编程9个经典提问及解答》的详细说明。
简介:本文主要介绍的是c语言编程的经典提问及解答

Q1.为什么C针有类型,因为指针是储存地址空间,在32位机上,就是4个字节来存储的,那为什么不直接就是long int型?而还有其他类型呢?2008-9-12

An:答案见Q5。

Q2:指向函数的指针是什么意思?(陌生)2008-9-12

An:虽然函数不是变量,但是在内存中还是有函数入口,整个入口就是函数的地址,既然是函数地址就有函数指针。

Q3:什么是声明?什么是定义?

An:定义只能出现一次,确定对象的类型,并为其分配内存;声明可以初次出现,可以在不同文件中出现,意思是在不同文件中也可以引用它。Extern

Q4:什么是左值?什么是右值?

An:左值是地址,右值是地址的内容。每个符号在编译的时候的地址都是知道的。

Q4:请问,++x与x++有什么区别?

An:++x是先增加x的内容,然后取值放在内存;x++是,取x的地址,其值装在到寄存器中,然后内存的数值增加。可以这样理解,这些操作符号都是对变量的拷贝,前缀表示拷贝之前变量的值增加,后缀表示,拷贝后对变量的增加。(理解其机制,或者其本质原理)

Q5:指针就是地址,在32位机器,就是4字节的地址信息,就是int型,那么为什么指针还有类型呢?——指针的类型(int 为4字节,在不同机器,不同编译器是不一样的)

An:因为只有知道指针的类型,才能参与操作,如*P++,如果是char类型就加一个字节,以此类推……,如果,不知道类型的话,其参与的运算就不知道去哪里了。(也许这也是指针特别之处吧!)

Q6:在编译过程中单引号和双引号的区别?

An:单引号在使用中代表只是一个整数;双引号代表的是指向无名数组的指针,以”o”初始化结尾。(字符串)

Q7:void *p()与void (*p)()的区别?

An:()的优先级比*高,所以*p()等效于*(p()),是一个函数,返回值为void类型;

后者是指向该函数的指针。(或者说,一个是指向该函数,一个指向该函数的返回值。)

好,那如果,你还是不理解,前者是p()是函数,(void*)是指针,既返回值为指针;

后者(*p)指针,然后返回值为void,只是指向该函数的指针。

Q8:如何理解数组?

An:对数值要又指针的概念,对数组下表的操作其实都是通过对指针的操作来实现的。另外要特别注意理解两点:1.C语言只有一维数组,其他数组都是由其一维数组构成;2对数组的操作就是对数组大小的确定,以及获得数组下标为0的指针。

Q9:如何理解表达式子“*”关于指针的用法?(某些部分还需要了解计算机的结构)

An:如*p,指针p的值是内存特定位置的地址,*就是让指针指向该地址。如果*p是左值,就是对该地址的值进行修改;如果是右值,则是取该地址的值。(计算机需要一套系统,就是取地址的寄存器,然后按照寄存器的值找到相应的地址,然后去数据,送到AMU运算。

提醒:《c语言编程9个经典提问及解答》最后刷新时间 2024-03-14 01:02:49,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《c语言编程9个经典提问及解答》该内容的真实性请自行鉴别。