以图明志

C/C++编程语言

一份C++面试题和答案

你也许会在面试中遇到这些问题
以下三条输出语句分别输出什么?分别输出false,false,true。str1和str2都是字符数组,每个都有其自己的存储区,它们的值则是各存储区首地址,不等;str3和str4同上,只是按const语义,它们所指向的数据区不能修改。str5和str6并非数组而是字符指针,并不分配存储区。

C/C++编程语言

C语言随机数生成

rand()函数与srand()函数的使用
C语言/C++产生随机数要用到的是rand()函数,srand()函数,C语言/C++里没有自带的random(int number)函数。函数srand()用来设置rand()产生随机数时的随机数种子。参数seed必须是个整数,通常可以利用time(0)的返回值来当做seed。如果每次seed都设相同值,rand()所产生的随机数值每次就会一样。

C/C++编程语言

C语言中的&地址操作符

取地址符&的语义你了解吗
&在用于计算时就是取变量地址,如int* a = &b,就是将整型变量b的地址取出,赋值给整型指针a,a中的内容就是b的地址,所以a指向b。*在用于计算时,就是取指针所指向的地址中的值,如int b = *a,就是将整型指针a指向的地址中存放的内容赋值给整型变量b。C语言中,&符号大家一定很熟悉吧,它除了可以作为按位运算“与”之外还有更常用的功能——取变量地址。

C/C++编程语言

C语言使用指针访问数组

下标与指针其实是等价的
如果pa指向数组中的某个元素,那么pa+1将指向下一个元素,pa+i指向下i个元素。所以,若果pa指向a[0],那么*pa其实就是a[0],*(pa+1)就是a[1],*(pa+i)就是a[i]。根据这个思路,我们可以使用指针来访问数组。

C/C++编程语言

C语言stringcopy()的底层实现

C 程序设计:字符串复制
字符串常量实际上是个字符数组,比如 welcome to www.nowamagic.net 就是个字符数组,并且以 '\0' 结尾。字符串串常量的一个常见的用法就是作为函数参数,比如常见的 printf("welcome to www.nowamagic.net"); 字符串参数实际上是通过字符指针访问该字符串的。这里的 printf() 函数接受的是一个指向字符数组第一个字符的指针。

C/C++编程语言

C语言将数字转化为字符串

底层算法的实现
函数 char *digitToAlpha (int val, char *buf, unsigned radix) 的功能是将数值转换为字符串。参数:第一个是要转化的整数,第二个是转化后的字符串,第三个是要转化整数的基数,就是说如果基数是10,就可以直接转化,如果不是10,是其他值(2-36之间),则先把该整数转化为该基数的数后,再转化为字符串。

C/C++编程语言

C语言strcmp()函数是如何实现的

C 程序设计:字符串比较
函数 int stringcompare(char *source, char *target) 比较字符串 source 和 target,并根据 source 是否小于、等于或大于 target 的结果分别返回负整数、0或者整数。该返回值是 source 和 target 由前后逐字符比较时遇到的第一个不相等字符处的字符的差值。

C/C++编程语言

你所未必了解的main()函数的事情

五花八门的main()
在各种C语言书上,能看到各式各样main()函数的写法,简直令人无所适从,这是这么回事?原因主要有两个:一个是随着C语言的发展和演化,main()函数的写法也在不断变化;另外,某些书籍写法不规范或误导的现象也同时存在。最初main()函数的写法非常简洁,那个时候的C程序员哪怕一个字符似乎都不肯多写。不知道是因为当时键盘质量不好还是因为编辑器太糟糕的缘故,那个时代的C程序员似乎惊人地一致崇尚“简约”——甚至可以说是“至简”。

C/C++编程语言

关于函数声明、函数原型与函数定义

三个概念的辨析
谭浩强关于函数声明、函数原型与函数定义的说明:对函数的“定义”和“声明”不是一回事。函数的定义是指对函数功能的确立,包括指定函数名,函数值类型、形参及其类型以及函数体等,它是一个完整的、独立的函数单位……这段论述包含了许多概念性错误,这些概念错误在许多C语言书中都同样普遍存在。为了说明这些错误,首先来回顾一下C语言演变和发展的一些情况。

C/C++编程语言

C语言变量存储类型介绍

变量存储类型用来说明变量的作用范围
C语言的变量存储类型有:自动类、寄存器类、静态类和外部类。局部变量是指在函数内部说明的变量(有时也称为自动变量),用关键字auto进行说明。 所有的非全程变量都被认为是局部变量,所以auto实际上从来不用。局部变量在函数调用时自动产生,但不会自动初始化, 随函数调用的结束,这个变量也就自动消失了。

C/C++编程语言

基础:C语言里的printf()与scanf()

将基础理解得最透彻
printf()函数参数传递的机制随实现不同而不同,下面是参数传递在系统中的工作原理。函数调用如下:printf("%ld %ld %ld %ld",n1,n2,n3,n4);该调用告诉计算机把变量n1,n2,n3,n4的值传递给计算机,计算机把它们放置到被称为对战(stack)的一块内存区域中来实现。

C/C++编程语言

三道C语言字符串操作的笔试题

字符串操作在面试经常出现
对一个字符串重新排列,字母排在前面,数字排在后面,并不改变原来字母之间以及数字之间的字符顺序。将s所指字符串中最后一次出现的与t1所指字符串相同的子串替换为t2所指字符串。将s所指的字符串中ASCII值为奇数的字符删除,串中剩余字符形成一个新串放在t所指的数组中。

C/C++编程语言

C语言中sizeof与strlen的用法区别

sizeof探测类型,strlen字符串长
sizeof操作符的结果类型是size_t,它在头文件中typedef为unsigned int类型。该类型保证能容纳实现所建立的最大对象的字节大小。sizeof是运算符(C++ 关键字),strlen是函数。数组做sizeof的参数不退化,传递给strlen就退化为指针了。大部分编译程序在编译的时候就把sizeof计算过了,是类型或是变量的长度,这就是sizeof(x)可以用来定义数组维数的原因。

C/C++编程语言

typedef与define在用法上的区别

typedef是为类型取了个“别名”
简单来讲:#define只是简单的进行了替换,而typedef则是为类型取了个“别名”。 #define是预处理指令,在编译预处理时进行简单的替换,不作正确性检查,不关含义是否正确照样带入,只有在编译已被展开的源程序时才会发现可能的错误并报错。如果你把#define语句中的数字9 写成字母g 预处理也照样带入。

C/C++编程语言

C语言中的struct和typedef struct

struct和typedef struct
typedef为C语言的关键字,作用是为一种数据类型定义一个新名字。这里的数据类型包括内部数据类型(int,char等)和自定义的数据类型(struct等)。在编程中使用typedef目的一般有两个,一个是给变量一个易记且意义明确的新名字,另一个是简化一些比较复杂的类型声明。

C/C++编程语言

C语言的回归

唯一真正重要的部分是设计
语言之争永远是火药味十足的话题。尤其是 C 和 C++ 的目标市场又有很高的重合性,C++ 程序员往往对C++ 其有着宗教般的虔诚。我想,今天我在自己的 blog 上继续这个战争,一定会换来更多的骂名。只不过这次 Linus 几句话真是说到我心坎里去了,不喊出来会憋坏的。
2 / 4 首页 < Prev 1 2 3 4 Next > 尾页 页码: