当前位置:文档之家› C语言学习笔记(必看知识点)

C语言学习笔记(必看知识点)

C语言学习笔记(必看知识点)
C语言学习笔记(必看知识点)

C学习笔记

--必看知识点100例(上)

--edited by lvlv from Nov. 8,2013 to Mar. 31,2014

1.define和ifndef的用法

答:取消宏定义undef

条件编译预处理:

#ifndef 标识符

# define 标识符

程序段 1

#else

程序段 2

#endif

它的作用是当“ 标识符没有由# d e f i n e定义过。则编译“程序段1”。否则编译“程序段2” 。

注意:条件编译的作用是防止此头文件被多个文件调用,产生编译冲突,这里的表示符为当前头文件名的大写前加上_,如果头文件名为err.h,则标示符为_ERR_H.

2. extern关键字的用法。

extern可以置于变量或者函数前,以表示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。

另外,extern也可用来进行链接指定。

3.sizeof的结果等于对象或者类型所占的内存字节数。

4. snprintf()函数的用法。

答:函数原型int snprintf(char *str, size_t size, const char *format, ...);功能将可变个参数(...)按照format格式化成字符串,然后将其复制到str中。返回欲写入的字符串长度,若出错则返回负值。

5.volatile(不稳定的,易变的)关键字

答:volatile i=10;

k=i;

volatile 告诉编译器i是随时可能发生变化的,每次使用它的时候必须从i的地址中读取,因而编译器生成的可执行码会重新从i的地址读取数据放在k中。

6.strtok函数的用法。

答:函数原型char *strtok(char s[], const char *delim);

例如:strtok("abc,def,ghi",","),最后可以分割成为abc def ghi.尤其在点分十进制的IP中提取应用较多。

7.MIC?

答:英特尔集成众核(Intel Many Integrated Core,MIC)架构是英特尔公司现有产品(包括英特尔至强处理器在内)的另一个关键补充。这种架构能在一颗芯片里面支持200多个线程同时工作。

MIC众核协处理器Knight Corner,和之前上代Larrabee继承者Knights Ferry不同的是,新的Knights Corner从外表上看是采用与Xeon类似的LGA/BGA封装。从这点来看,集成50个x86核心,运算能力达到1TFLOPS的Knights Corner可能会放弃“加速卡”的形式,采用QPI总线替代PCI-E界面。

7.C语言中函数指针变量的详细介绍

答:

函数指针变量的作用:指向函数入口地址,用来调用函数。

使用函数指针的好处在于,可以将实现同一功能的多个模块统一起来标识,这样一来更容易后期的维护,系统结构更加清晰。或者归纳为:便于分层设计、利于系统抽象、降低耦合度以及使接口与实现分开。

函数指针变量定义的一般形式为:

类型说明符 (* 指针变量名 )();

其中 " 类型说明符 " 表示被指函数的返回值的类型。 "(* 指针变量名 )" 表示 "*" 后面的变量是定义的指针变量。最后的空括号表示指针变量所指的是一个函数。

例如申明函数指针变量:int (*pf)()或者char * (*pf)();

后者表示 pf 是一个指向函数入口的指针变量,该函数的返回值 ( 函数值 ) 是指针型,指向字符串。

使用方法:int max(int x,int y)

pf=函数名;

(*pf)(int x,int y);

8.conio.h头文件的说明

答:conio.h不是C标准库中的头文件,在C standard library,ISO C 和POSIX标准中均没有定义。conio是Console Input/Output(控制台输入输出)的简写,其中定义了通过控制台进行数据输入和数据输出的函数,主要是一些用户通过按键盘产生的对应操作,比如getch()函数等等。

大部分DOS,Windows 3.x,Phar Lap,DOSX,OS/2 or Win32平台上的C编译器提供此文件,UNIX 和Linux平台的c编译器通常不包含此头文件。

如果需要使用此头文件,可以从互联网下载。

conio库不仅适用于 Windows 平台,在 Linux 下也可使用.网上已经有兼容包,下载后打开就可使用;而至于 Mac 则完全跟 Windows 没有区别,直接可以使用.

9. ++i和i++的效率的比较。

答:简单的比较前缀自增运算符和后缀自增运算符的效率是片面的,因为存在很多因素影响这个问题的答案。以现在的编译器的优化水平,

在内建数据类型的情况下,效率没有区别。在自定义数据类型的情况下,++i的效率较高。

10.C语言中near和far关键字的作用?

答:far是和near对应的,就是一般程序的函数调用都在64k地址范围内的,就是16位寻址就够了,但是当代码比较庞大时,16位就可能不够了.far就代表32位寻址,函数的本质就是个地址,指针的本质也是个地址,所以就有了寻址的问题。

11.头文件中stdlib.h内容。

答:stdlib.h里面定义了五种类型、一些宏和通用工具函数。类型例如size_t、wchar_t、div_t、ldiv_t和lldiv_t;宏例如EXIT_FAILURE、EXIT_SUCCESS、RAND_MAX和MB_CUR_MAX 等等;常用的函数如malloc()、calloc()、realloc()、free()、system()、atoi()、atol()、rand()、srand()、exit()等等。

12.#define只有宏名定义是什么意思!

答:一般来说这样空的宏都是为了某些手段的,例如跨平台,比如说在windows下我让a赋值为10,在linux下要让a赋值为20,那么就可以这么写

#ifdef WINDOWS

a = 10;

#endif

#ifdef LINUX

a = 20;

#endif;

这样我只要在某个地方定义一个#define WINDOWS或者#define LINUX就可以在跨平台的情况下采取不同的策略了.

#undef 是在后面取消以前定义的宏定义

18.extern “C”修饰符的理解!

答:被extern "C"修饰的变量和函数是按照C语言方式编译和连接的;

19.C++中增加函数重载的功能的内部原理!

答:C语言是不支持函数重载功能的,

void foo( int x, int y );

该函数被C编译器编译后在符号库中的名字为_foo,而C++编译器则会产生像_foo_int_int 之类的名字(不同的编译器可能生成的名字不同,但是都采用了相同的机制,生成的新名字称为“mangled name”)。_foo_int_int这样的名字包含了函数名、函数参数数量及类型信息,C++就是靠这种机制来实现函数重载的。

20.理解C、C++和C#中变量生存期的区别!

答:应该从作用域的角度来区分变量的生存周期,生存周期分为三种:

整个程序:修饰的关键字有static

当前文件(.c、.cpp、.cs文件):修饰的关键字有:C语言:auto(自动变量),C++语言:private、protected、public等,C#中:private、protected、public、partial等。

当前程序段(if语句段、函数体等):修饰的关键字有:同当前文件

注:函数体外定义静态变量为全局静态变量,函数体内定义静态变量为局部静态变量,二者生存周期都是整个程序。且C语言中没有私有和公有之分,C++扩充了这一个功能。

21.引用和指针的区别?

答:

1.从内存上来讲系统为指针分配内存空间,而引用与绑定的对象共享内存空间,系统不为引用变量分配内容空间。

2指针初始化以后可以改变指向的对象,而引用定义的时候必须要初始化,且初始化以后不允许再重新绑定对象。

3.所以引用访问对象是直接访问。指针访问对象是间接访问。

4。如果pa是指针,那么*pa就是引用了。又如int a,&ra= a;那么ra就是a的reference 了。

22. c语言中头文件、库文件和.c文件的联系与区别。

答:h头文件是编译时必须的,lib是链接时需要的,dll是运行时需要的。

附加依赖项的是.lib不是.dll,若生成了DLL,则肯定也生成 LIB文件。如果要完成源代码的编译和链接,有头文件和lib就够了。如果也使动态连接的程序运行起来,有dll就够了。在开发和调试阶段,当然最好都有。

23.C语言中编译链接的过程!

答:obj文件是目标文件,一般是程序编译后的二进制文件,在通过链接器和资源文件链接就成exe文件了。

OBJ只给出了程序的相对地址,而EXE是绝对地址。

OBJ文件不支持有孔的多边形面。

24.常见字符编码有:

ASCII编码(American Standard Code for Information Interchange)基本的 ASCII 字符集共有 128 个字符,包括常用的字母、数字、标点符号等,一个字节来存放一个 ASCII 字符。

BIG-5码:是通行于台湾、香港地区的一个繁体字编码方案,俗称“大五码”。

GB2312编码:对ASCII编码的扩充,收录简体中文和常用字符,通用于中国大陆。每个汉字占用两个字节。基本集共收入汉字6763个和非汉字图形字符682个。对于人名、古汉语等方面出现的罕用字,GB 2312不能处理,这导致了后来GBK及GB 18030汉字字符集的出现。

GBK编码:对GB2312的扩充,收录了繁体中文,简、繁体字融于一库,每个汉字占用两个字节。

Unicode编码:注意,Unicode只是一个编码规范,目前实际实现的unicode编码只要有三种:UTF-8,UCS-2和UTF-16。Unicode当然是一个很大的集合,现在的规模可以容纳100多万个符号。Unicode固然统一了编码方式,但是它的效率不高,比如UCS-4(Unicode的标准之一)规定用4个字节存储一个符号,那么每个英文字母前都必然有三个字节是0,这对存储和传输来说都很耗资源。

UTF-8编码:UTF-8是一种8位的unicode字符集,编码长度是可变的,并且是ASCII字符集的严格超集,也就是说ASCII中每个字符的编码在UTF-8中是完全一样的。UTF-8字符集中,一个字符可能是1个字节,2个字节,3个字节或者4个字节长。一般来说,欧洲的字母字符长度为1到2个字节,而亚洲的大部分字符则是3个字节,附加字符为4个字节长。

UCS-2编码:UCS-2是固定长度为16位的unicode字符集。每个字符都是2个字节,UCS-2只支持unicode3.0,所以不支持附加字符。

UCS-2的优点:

对于亚洲字符的存储空间需求比UTF-8少,因为每个字符都是2个字节。

处理字符的速度比UTF-8更快,因为是固定长度编码的。

对于windows和java的支持更好。

UTF-16编码:

UTF-16也是一种16位编码的字符集。实际上,UTF-16就是UCS-2加上附加字符的支持,也就是符合unicode4.0规范的UCS-2。所以UTF-16是UCS-2的严格超集。

UTF-16中的字符,要么是2个字节,要么是4个字节表示的。UTF-16主要在windows2000以上版本使用。

UTF-16相对UTF-8的优点,和UCS-2是一致的。

总结:在亚洲进行在web开发时,面向的是全球,使用UTF-8编码是绝对没有错的,面向亚洲的话,使用UCS-2和UTF编码效率会更高。综上所述,使用UTF-8编码绝对没有错,不会出现编码乱码的现象。

25.Sql Sever 中char、varchar、nchar和nvarchar的对比区别!

答:ncahr和nvarchar采用unicode编码,固定每个字符占用两个字节,char和varchar 固定每个字符采用一个字节。

所以一般来说,如果含有中文字符,用nchar/nvarchar,如果纯英文和数字,用char/varchar 我把他们的区别概括成:

CHAR,NCHAR 定长,速度快,占空间大,需处理

VARCHAR,NVARCHAR,TEXT 不定长,空间小,速度慢,无需处理。

注意:操作系统的语言环境支持中文可以使用char和varchar,如果操作系统环境不支持中文,必须使用nvarchar和ncahr。请协调好存储代价和兼容性之间的关系。

26.MD5利用salt进行加密的过程程?

用户输入【账号】和【密码】(以及其他用户信息);

系统为用户生成【Salt值】;

系统将【Salt值】和【用户密码】连接到一起;

对连接后的值进行散列,得到【Hash值】;

将【Hash值1】和【Salt值】分别放到数据库中。

用户登录时,

用户输入【账号】和【密码】;

系统通过用户名找到与之对应的【Hash值】和【Salt值】;

系统将【Salt值】和【用户输入的密码】连接到一起;

对连接后的值进行散列,得到【Hash值2】(注意是即时运算出来的值);

比较【Hash值1】和【Hash值2】是否相等,相等则表示密码正确,否则表示密码错误。有时候,为了减轻开发压力,程序员会统一使用一个salt值(储存在某个地方),而不是每个用户都生成私有的salt值。

27.MD5简介!

答:Message Digest Algorithm MD5(中文名为消息摘要算法第五版)为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。用于确保信息传输完整一致。是计算机广泛使用的杂凑算法之一(又译摘要算法、哈希算法),主流编程语言普遍已有MD5实现算法原理:

对MD5算法简要的叙述可以为:MD5以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后单目运算符

28.C语言中运算符的优先级别!

30. alloca ,malloc、calloc和realloc的理解!

答:alloca ()是分配在栈上,calloc()”是”分配内存给多个对象”,” malloc()”是”分配内存给一个对象”,”realloc()”是”重新分配内存”之意。”free()”就比较简单了,”释放”的意思,就是把之前所分配的内存空间给释放出来。参数均为以字节为单位。

注意:alloca不具可移植性,而且在没有传统堆栈的机器上很难实现。当它的返回值直接传入另一个函数时会带来问题,因为他分配在栈上。

31.strstr(char *str1, char *str2)和strchr(const char *s,char c)的分别和用法!答:是分别求字符串和字符在前面字符串中第一次出现的地址的指针,指针的内容就是地址,返回的地址是字符串在内存中随机分配的地址再加上你所搜索的字符在字符串位置,如果s 中不存在c则返回NULL。

32. strcpy和memcpy主要有以下3方面的区别。

1、复制的内容不同。strcpy只能复制字符串,而memcpy可以复制任意内容,例如字符数组、整型、结构体、类等。

2、复制的方法不同。strcpy不需要指定长度,它遇到被复制字符的串结束符"\0"才结束,所以容易溢出。memcpy则是根据其第3个参数决定复制的长度。

3、用途不同。通常在复制字符串时用strcpy,而需要复制其他类型数据时则一般用memcpy。

33.函数指针的用法

答:函数指针的定义:

// 申明函数指针pf

int (*pf)(const int&, const int&);

// 具体函数

int intCompare(constint& aInt, constint& bInt)

{}

可将函数指针pf指向函数intCompare

pf = intCompare;

调用:// 使用pf

if(pf(aInt, bInt) == 0)

{

cout <<"two integers are equal"<<"."<< endl;

}

或者用pf来申明其他的函数指针:

// 定义函数指针类型cmpFun

typedefint (*cmpFun)(constint&, constint&);

cmpFun pf= intCompare;表示:pf指向函数intCompare();

//函数名可以作为参数,申明形式是函数指针作为参数,其做法为

int plusFun(int& aInt, int(*paf2)(constint&, constint&))

{

int bInt = 1;

int cInt = 2;

return aInt + paf2(bInt, cInt);

}

函数指针作为返回值

一个函数的返回值可以是一个函数指针,这个声明形式写起来有点麻烦:

// 函数指针作为返回值

int (*retFunPointer(int))(constint&, constint&);

上面的声明的含义:

a) retFunPointer是一个函数,该函数有一个int类型的参数;

b) retFunPointer返回值是一个函数指针,它指向的是带有两个const int&类型参

数,且返回类型为int的函数。

retFunPointer的定义:

// 函数指针为返回值,整个函数名为retFunPointer,把自己装扮成函数指针,作为返回值。

int (*retFunPointer(int aInt))(constint&, constint&)

{

cout << aInt << endl;

// pf已经在前面定义过了

return pf;

}

调用代码示例:

// 函数指针作为返回值,retFunPointer返回一个cmpFun类型的函数指针

cmpFun pf3 = retFunPointer(aaInt);

int result = pf3(aaInt, bbInt);

cout << result << endl;

34.注意:

答:C语言中,头文件中include的头文件内申明的函数,在当前.c文件中,是可以间接调用的!

35.注意

答:C语言中没有bool类型,用0和1来表示真假!

C语言和C++都是强类型的,变量在申明时候就要指定类型,而不是等编译器根据编译时候所赋的值来确定其便编译时的类型。

36.MD5算法原理简介!

答:对MD5算法简要的叙述可以为:MD5以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值。也就是32个十六进制的字符,每个字符占4位从0到f,均为小写,因此叫做128位散列值。

37. strncmp()函数简介

答:用法: int strncmp(char *str1, char *str2, int maxlen);

说明:此函数功能即比较字符串str1和str2的前maxlen个字符。如果前maxlen字节完全相等,返回值就=0;在前maxlen字节比较过程中,如果出现str1[n]与str2[n]不等,则返回(str1[n]-str2[n])[1]。

38.<<和>>和>>>这三个运算符号的理解

答:

<<(左移)

运算规则:

按二进制形式把所有的数字向左移动对应的位数,高位移出(舍弃),低位的空位补零。

数学意义:

在数字没有溢出的前提下,对于正数和负数,左移一位都相当于乘以2的1次方,左移n 位就相当于乘以2的n次方。

>>(带符号右移)

运算规则:

按二进制形式把所有的数字向右移动对应的位数,低位移出(舍弃),高位的空位补符号位,即正数补零,负数补1。

数学意义:

右移一位相当于除2,右移n位相当于除以2的n次方。这里是取商哈,余数就不要了。

>>>(无符号右移)

运算规则:

按二进制形式把所有的数字向右移动对应位数,低位移出(舍弃),高位的空位补零。对于正数来说和带符号右移相同,对于负数来说不同。其他结构和>>相似。

39.getch()函数和getchar()函数的区别

答:getch():所在头文件:conio.h

函数用途:从控制台读取一个字符,但不显示在屏幕上,然后程序继续执行下去。

getchar()函数:所在头文件时stdio.h

函数用途:用户按下字符后,等待用户按下回车,然后继续执行,且返回值显示在屏幕上。

40.注意

strlen()函数求字符串长度的时候不会讲结尾符号\0算进去。

substr()函数是C++中的函数,C语言中没有这个函数,要想实现这个功能,可以使用strncpy()或者memcpy来实现。

41.strncpy()和memcpy()的区别

答:二者都可指定长度来实现串的拷贝。不同点是当然有区别,strncpy()时拷贝字符串,memcpy()是拷贝内存内容,可以拷贝其他类型的数据。

42.sizeof()函数

答:sizeof是运算符,可用于任何变量名、类型名或常量值,当用于变量名(不是数组名)或常量时,它不需要用圆括号。它在编译时起作用,而不是运行时。sizeof的结果等于对象或者类型所占的内存字节数,包括字符串的结尾符\0,strlen()求字符串的长度不包括结尾符\0。

43.memet()函数,解决内存内存空间出现屯屯屯屯屯屯和烫烫烫烫烫烫乱码

答:void *memset(void *s, char ch, size_t n);

将s所指向的某一块内存中的每个字节的内容全部设置为ch指定的ASCII值,块的大小由第三个参数指定,这个函数通常为新申请的内存做初始化工作,其返回值为指向S的指针。其中void *s空指针,指针不指向任何地址空间。初始化内存地址空间后就会解决乱码问题,用memset(s,NULL,sizeof(s)).乱码问题是因为使用malloc()申请的内存空间没有初始化,默认赋值0xcc,打印出来就是屯屯屯,malloc申请的空间是在"堆"上的,可手动释放。使用alloca()申请内存会产生烫烫烫烫烫烫,与malloc,calloc,realloc类似,但是注意一个重要的区别,_alloca是在栈(stack)上申请空间,用完马上就释放,无需手动释放。

44. c语言中定义变量不赋初值默认是多少?

答:C语言中,没有加static 默认为auto 型此时不给初值的变量的初值是随机的,但是如果加了 static,不给初值的变量的初值是默认是0,指针也是一样,其实 NULL 的值就是0,只是它不代表任何地址。

45.C语言从源码到可执行程序的四个过程

答:

预处理(也称预编译,Preprocessing):C语言的预处理主要有三个方面的内容: 1.宏定义;2.文件包含; 3.条件编译。预处理命令以符号“#”开头,这个方面本质是将需要的代码包含到当前的.c文件中。

编译(Compilation):编译所做的工作就是词法分析,语法分析,在进行汇编成中间代码,汇编代码。

汇编(Assembly):汇编实际上指把汇编语言代码翻译成目标机器指令的过程。经过这一处理而得到相应的目标文件。目标文件中所存放的也就是与源程序等效的目标的机器语言代码。目标文件由段组成。通常一个目标文件中至少有两个段:

代码段:该段中所包含的主要是程序的指令。该段一般是可读和可执行的,但一般却不可写。数据段:主要存放程序中要用到的各种全局变量或静态的数据。一般数据段都是可读,可写,可执行的。

链接(Linking):链接程序的主要工作就是将有关的目标文件彼此相连接,也即将在一个文件中引用的符号同该符号在另外一个文件中的定义连接起来,使得所有的这些目标文件成为一个能够诶操作系统装入执行的统一整体。

链接过程分为静态链接和动态链接。静态链接是指连接程序从静态链接库中拷贝需要的代码到被执行的程序中,动态链接是指代码被放到称作是动态链接库或共享对象的某个目标文件中,链接程序此时所作的只是在最终的可执行程序中记录下共享对象的名字以及其它少量的登记信息。在此可执行文件被执行时,动态链接库的全部内容将被映射到运行时相应进程的虚地址空间。动态链接程序将根据可执行程序中记录的信息找到相应的函数代码。

46.GCC编译器编译的过程

答:实质上,GCC的编译过程是分为四个阶段进行的,即预处理(也称预编译,Preprocessing)、编译(Compilation)、汇编 (Assembly)和连接(Linking)。

一步到位编译:g cc test.c -o test.out 输出可执行文件test.out

预处理:gcc -E test.c -o test.i 或 gcc -E test.c

编译为汇编代码(Compilation):gcc -S test.i -o test.s

汇编(Assembly):gcc -c test.s -o test.o,编译成目标文件test.o。

连接(Linking):gcc test.o -o test.out

47. C语言程序调试的常见错误分析与解决办法

答:C语言程序的编译是以.c文件为单位进行编译的,生成.obj二进制目标文件,最后在

链接成可执行文件。

编译提示的错误:编译的时候进行词法分析和语法分析,此时书写不符合语法规则或者未定义会进行报错,这种错误容易处理。

链接提示的错误:经常会出现某函数已经在main.obj文件中定义,出现重复编译。这时候预处理的条件编译就发挥作用了,可以防止重复编译。但是,作用只能是防止变量的申明的重复编译,而不能防止变量的定义的重复编译。也就是说,在头文件中定义了函数之后,在

不同的.c文件引入头文件中,两个.c文件生成的obj文件中都会含有对函数体代码的目标代码。

原因是,我个人理解是,条件编译之所以对头文件中定义的函数不能起到防止重复编译的功能,是因为函数体的实现代码编译后最终是要存入obj目标文件中的,编译是以.c文件为单位的,每个.c文件都会被编译成.obj文件,但是.h文件中不能编译成obj文件,因此其函数的定义部分,即实现部分一定要编译成目标代码存入obj文件,供链接时使用。但是当两个.c文件同时引用头文件时,两个.c文件都可包含函数实现部分的代码的目标代码,编译器没有规定将函数代码的目标代码存入哪个.c文件,只能两个同时包含,这就导致了链接时出现的重复定义的问题。解决的办法就是不要在头文件中定义变量,只能申明。或者只能让一个.c文件引用含有定义变量的头文件,或者用static来修饰函数,定义为全局静态类型函数,这样的话函数代码就会被存到全局/静态存储区,编译时只会被编译一次,若非static静态全局变量,函数被包含进.c文件后,就变成了当前.c文件的全局变量,而不是整个程序的全局变量,这就导致了每个.c文件把它当做自己的函数来进行编译,将目标代码存入自己的obj文件中,链接时就会出错。

48.C/C++语言中程序在内存中的分区情况

答:在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。

栈区,就是那些由编译器在需要的时候分配,在不需要的时候自动清除的变量的存储区。里面的变量通常是局部变量、函数参数等。

堆区,就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete。如果程序员没有释放掉,那么在程序结束后,操作系统会自动回收。

程序代码区—存放函数体的二进制代码。

全局/静态存储区,全局变量和静态变量被分配到同一块内存中,在以前的C语言中,全局变量又分为初始化的和未初始化的,在C++里面没有这个区分了,他们共同占用同一块内存区。

常量存储区,这是一块比较特殊的存储区,他们里面存放的是常量,不允许修改

50.C语言中sizeof()不能用来求指针指向的内存空间的大小

答:*output=(char *)alloca(23*sizeof(char));

sizeof(output);求得的不是指针output指向的内存的地址空间的大小,而是指针变量本身所占的内存空间大小,为4个字节。指针和数组是不一样的,但数组做为参数传递时就会退化为同类型的指针. str是数组拥有固定的内存 sizeof是计算它占的字节数,而指针只是一个存放变量地址的一个变量在任何时候都是占四个字节.

51.C 语言中不能用用strlen(),来求指针指向内存空间的长度,初始化后的指针字符串才可以

答:因为strlen()函数是用来计算字符串的长度,是以NULL来表示的字符串结尾的标志,如果没有\0这个字符的话,strlen()统计出来的长度是不正确的。

52. C语言中函数的变参问题

答:C语言中输入和输出格式控制函数的参数实现不定的变化,其实现的机理是因为VA_LIST,是在C语言中解决变参问题的一组宏,所在头文件:#include 。具体请参见百度百科。

53.8086/8088处理器中段的首地址,基址和偏移地址从哪获取

答:

物理地址=段基址*16+偏移地址

段的首地址就是段的基地址,等于段寄存器的内容*16。

段寄存器分为CS(代码段,Code Segment)、DS(数据段,Data Segment)、SS(堆栈段,Stack Segment)和ES(附加段数据,Extra Segment)寄存器。

当进行读/写存储器操作数或者访问变量时,自动选择DS或者ES寄存器作为段基址。

DS偏移地址对应SI(Source Index源变址寄存器)、DI(Destination Index目的变址寄

存器)

CS偏移地址对应IP(指针寄存器)

SS偏移地址对应BP(基址指针寄存器Base Pointer)或SP(堆栈指针寄存器Stack Pointer)ES偏移地址对应 DI(Destination Index目的变址寄存器)

53.C语言中地址寻址与处理器的关系

答:8080的地址线是16条,8086/8088的地址线有20条,80286的地址线有24条,

Intel 80386 微处理器提供了32位地址总线,Intel 80386 微处理器内存管理的三种工作方式有三种:实地址方式,虚地址保护方式,虚拟8086方式。

实地址模式:寻址采用和8086相同的16位段和偏移量,最大寻址空间1MB,最大分段64KB。可以使用32位指令。32位的x86 CPU用做高速的8086。

保护模式:寻址采用32位段和偏移量,最大寻址空间4GB,最大分段4GB (Pentium Pre及以后为64GB)。

虚拟8086方式:在保护模式下CPU可以进入虚拟8086方式,这是在保护模式下的实模式程序运行环境。

54.操作系统内存分段管理和分页管理的区别

答:页和分段系统有许多相似之处,但在概念上两者完全不同,主要表现在:

1、页是信息的物理单位,分页是为实现离散分配方式,以消减内存的外零头,提高内存的利用率;或者说,分页仅仅是由于系统管理的需要,而不是用户的需要。段是信息的逻辑单位,它含有一组其意义相对完整的信息。分段的目的是为了能更好的满足用户的需要。

2、页的大小固定且由系统确定,把逻辑地址划分为页号和页内地址两部分,是由机器硬件实现的,因而一个系统只能有一种大小的页面。段的长度却不固定,决定于用户所编写的程序,通常由编辑程序在对源程序进行编辑时,根据信息的性质来划分。

3、分页的作业地址空间是维一的,即单一的线性空间,程序员只须利用一个记忆符,即可表示一地址。分段的作业地址空间是二维的,程序员在标识一个地址时,既需给出段名,又需给出段内地址。

55.C语言程序中常量会经常出现后面有个u,这表示什么

答:13u,0xffu,283u,这在C语言中表示定义变量时的后缀,u表示整型无符号数。

56.exit()函数

答:所在头文件:stdlib.h

功能: 关闭所有文件,终止正在执行的程序。

exit(1)表示异常退出,exit(x)(x不为0)都表示异常退出。

57.对于内存空间分配函数alloca、malloc、calloc、realloc的理解

答:他们返回的是指向开辟空间的void型指针,故需要强制类型转换为需要的指针类型。如:float *p=(float *)malloc(100*sizeof(float));

即申请一个指向100个float型数据的指针,即float指针p。

注意:void型指针可以强制转换为其他类型的指针,并且其他类型的指针都可自动转换为void型指针。

58.C语言中的格式化函数

答:fprintf()函数:fprintf是C/C++中的一个格式化写—库函数;其作用是格式化输出到一个流/文件中。

sscanf()函数:从一个字符串中读进与指定格式相符的数据。sscanf与scanf类似,都是用于输入的,只是后者以键盘(stdin)为输入源,前者以固定字符串为输入源。

sprintf()函数:字串格式化命令,主要功能是把格式化的数据写入某个字符串中。sprintf 是个变参函数。

sscanf()和sprintf()函数的区别:sscanf的作用是字符串转换成字符,sprintf()

函数是字符转换成字符串。

示例:十六进制字符串穿转换为ASCII字符串到dst中

int v;

for (i=0; i<16; i++)

{

sscanf(result+i*2,"%2x",&v);

//dst[i]=(char)(v&0xFFu);// 0xFFu表示无符号十六进制数,作用取余

}

把ASCII字符串转换成十六进制字符串到result中

for (i=0; i<16; i++)

sprintf(result+2*i, "%02x", digest[i]);

result[32]=0;

59. C语言程序在VS2008编译时候出现的奇怪的错误

答:(1)error C2099: 初始值设定项不是常量,原因是C语言编译器不允许变量申明在函数外,解决办法是申明在函数内。

(2)异常代码是:char

*inputstr="8e7b27b2f9c02c7fe5687c66751f046100000000a6f9ba4e";

inputstr[i] =‘d’;

未处理的异常: 0xC0000005: 写入位置 0x0135674c 时发生访问冲突。

分析:产生这种异常的原因是字符指针inputstr指向的是常量,该常量存放在内存的常量区,不允许修改,故抛出这种异常。解决办法:不要对常量区的成员进行值的更改。应该放在堆栈区进行操作。

(3)C语言中在编译的时候有时会出现error C2143: 语法错误: 缺少“;”(在“类型”的前面),但我们用24K钛合金狗眼找了七七49分钟,都没有发现哪有少;这个符号,事实上,这是VS编译器欺骗了我们,因为VS编译器规定变量的声明必须放在函数内开始的部分,不能放在其他非变量申明语句的后面。

(4)错误:Run-Time Check Failure #2 - Stack around the variable 'v' was corrupted.

错误代码:char v;

for (i=0; i<16; i++)

{

sscanf(result+i*2,"%2x",&v);

}

解决办法:将char v改为int v,这种导致栈损坏应该是十六进制格式写入char类型变量的时候发生的,但是还不知道为什么会这样。

60. 常见排序算法

答.插入排序法:1简单插入排序法 2希尔排序法

选择排序法:1简单选择排序 2堆排序

交换排序:1 冒泡排序 2 快速排序

冒泡排序:(Bubble Sort)它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。具体代码演示请见百度百科。为稳定排序。

快速排序:(Quicksort)是对冒泡排序的一种改进。由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。为不稳定排序。

简单插入排序法:比如如下示例

1 5 7 3 1 6

把表分成两部分,前半部分已排序,后半部分未排序,我用|分开

初始为 5 | 1 7 3 1 6

一次插入排序,把第一个1插入前边已排序部分,得

1 5 | 7 3 1 6

后边依次是

1 5 7 | 3 1 6

1 3 5 7 | 1 6

1 1 3 5 7 | 6

1 1 3 5 6 7 |

为稳定排序。

希尔排序:(Shell Sort)是插入排序的一种。是针对直接插入排序算法的改进。该方法又称缩小增量排序,因DL.Shell于1959年提出而得名。

希尔排序的基本思想是:将需要排序的序列划分成为d个较小的子序列,所有距离为d 的倍数的记录放在同一个序列中。然后对子序列进行插入排序,通过插入排序能够使得原来

序列基本有序。这样通过对较小的序列进行插入排序,然后对基本有序的数列进行插入排序,能够提高插入排序算法的效率。

增量d的选取原则:去上一个增量的一般作为此次序列的划分增量。为不稳定排序。

简单选择排序:设所排序序列的记录个数为n。i取1,2,…,n-1,从所有n-i+1个记录(Ri,Ri+1,…,Rn)中找出排序码最小的记录,与第i个记录交换。执行n-1趟后就完成了记录序列的排序。为不稳定排序。

堆排序:

61.C语言跟内存分配方式

(1)从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。

(2)在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。

(3)从堆上分配,亦称动态内存分配。程序在运行的时候用malloc或new申请任意多少的内存,程序员自己负责在何时用free或delete释放内存。动态内存的生存期由我们决定,使用非常灵活,但问题也最多

C语言跟内存申请相关的函数主要有 alloca,calloc,malloc,free,realloc,sbrk等. 其中alloca是向栈申请内存,因此无需释放. malloc分配的内存是位于堆中的,并且没有

初始化内存的内容,因此基本上malloc之后,调用函数memset来初始化这部分的内存空间. calloc则将初始化这部分的内存,设置为0. 而realloc则对malloc申请的内存进行大小的调整.申请的内存最终需要通过函数free来释放. 而sbrk则是增加数据段的大小。

62. C语言中数据类型转换原则

答:数据类型转换分为显示转换和隐式转换。显示转换属于强制类型转换,隐式转换属于自动转换。

高到低的顺序给各种数据类型分等级,依次为:

long double, double, float, unsigned long long, long long, unsigned long, long, unsigned int 和int,char。这是按照数据类型的表示范围大小来划分的。

数据类型转换存在两种场合:

一是在赋值语句中,会进行转换,高等级数据类型会进行截断或舍入操作。低等级数据类型会完整的转换为高等级数据。

二是在运算表达式中,低等级数据类型会自动向高等级数据类型转换,被转换成表示范围更大的类型,故而把这种转换称为“升级(promotion)”。

注意:char类型可以自动转换为int类型。char类型变量在内存中的存储是以一个字节的ASCII码值来存放的,会被自动转换为int型。当字符串转换为int型时,也是读取ASCII 码值。比如字符串”aaaa”转换为unsigned int时,因为在VS开发环境下,unsigned int 占四个字节,这与我们有些C教科书上说的占两个字节不同。字符a的ASCII码值对应的是97,二进制表示是01100001,那么字符串”aaaa”在内存中的存在形式就是01100001011000010110000101100001,对应的十进制就是1633771873.

63.堆和栈的定性理解

问题是:堆与栈到底是什么,是指一块内存区呢,还是指一种数据结构?

答:明确说明操作系统(或编译原理)的堆与栈和数据结构的堆与栈是不同的概念。OS (Operating System)中的堆栈指的是两块相邻的存储空间,数据结构中的堆和栈指的是不同的数据结构。堆是完全二叉树,按性质是分为大顶堆或小顶堆,即父节点大于或小于左右孩子,通常用来排序或者进行。栈的性质则是先进后出,通常用在临时存储局部结果上。

64.CLR与程序集的关系与区别

答:程序集:经由编译器编译得到的,供CLR进一步编译执行的那个中间产物,在WINDOWS 系统中,它一般表现为。dll,或者是。exe的格式,但是要注意,它们跟普通意义上的WIN32可执行程序是完全不同的东西,程序集必须依靠CLR才能顺利执行。

CLR: Common Language Runtime, 公共语言运行时, 是一个可由多种编程语言使用的运行环境。CLR的核心功能包括:内存管理、程序集加载、安全性、异常处理和线程同步,可由面向CLR的所有语言使用。并保证应用和底层操作系统之间必要的分离。CLR是.NET Framework的主要执行引擎。

65. #define后面只跟一个“参数”是什么意思

答:例如#define IN,这里表示IN不带表任何内容,出现IN的地方,将其忽略就行了。这种做法的作用是为了标记某些内容,使程序阅读者能够清楚标记表明的意义,同时又不影响被编译的源代码。

另外的作用是,这些标记能被条件编译的预处理命令#ifdef、#ifndef检测到。一个重要的用法是多文件编译中防止头文件被重复包含。

66.MPI是什么

答:MPI(Message Passing Interface),是消息传递接口。

67.struct类型变量和union类型变量的区别

答:结构体里面的每一个成员变量都占有一定的内存空间。而共用体中的成员变量公用其元素中占用内存空间最长的变量的那个类型的内存空间。其赋值是覆盖式的,即内存中同一时刻只能存放一个成员变量的值。

68.struct类型变量和union类型变量占用内存空间大小的计算

首先在32位OS下,sizeof(char)=1;sizeof(int)=4;sizeof(double)=8;

sizeof(float)=4;sizeof(short int)=2。

union类型变量大小容易计算,即占用内存空间最长的成员变量的大小。

如typedefunion {long i;int k[5];char c;} DATE; printf(“%d”,sizeof(DATE));

输出的就是5*4=20

Struct类型变量的比较复杂,不是所有成员大小简单的相加,其大小是最后一个成员的偏移量加上最后一个成员的大小,再使地址对齐。成员按照定义时的顺序依次存储在连续的内存空间。其中偏移量指的是结构体变量中成员的地址和结构体变量地址的差,结构体变量中第一个成员的地址就是结构体变量的首地址。

地址对齐要求两条原则:

一、结构体变量中成员的偏移量必须是成员大小的整数倍(0被认为是任何数的整数倍)。

二、结构体大小必须是所有成员大小的整数倍。

聪明的你不难看出:

struct stu2{int k;short t;}; printf(“%d”,sizeof(DATE)); 输出的就是4+2+2=8;为满足原则二,编译器在最后加上2个字节的填充字节

struct stu2{char k;short t;}; printf(“%d”,sizeof(DATE)); 输出的就是1+1+2=4;为满足原则一,编译器在变量t前加上一个字节的填充字节。

为什么要地址对齐呢?

计算机组成原理教导我们这样有助于加快计算机的取数速度,否则就得多花指令周期了。为此,编译器默认会对结构体进行处理(实际上其它地方的数据变量也是如此),让宽度为2的基本数据类型(short等)都位于能被2整除的地址上,让宽度为4的基本数据类型(int 等)都位于能被4整除的地址上,以此类推。这样,两个数中间就可能需要加入填充字节,所以整个结构体的sizeof值就增长了。

字节对齐的细节和编译器实现相关,但一般而言,满足三个准则:

1) 结构体变量的首地址能够被其最宽基本类型成员的大小所整除;

2) 结构体每个成员相对于结构体首地址的偏移量(offset)都是成员大小的整数倍,如有需要编译器会在成员之间加上填充字节(internal adding);

3) 结构体的总大小为结构体最宽基本类型成员大小的整数倍,如有需要,编译器会在最末一个成员之后加上填充字节(trailing padding)。

69.细节:strlen()和sizeof()区别

答:区别一:sizeof是算符,strlen是函数。

区别二:sizeof可以用类型做参数,strlen只能用char*做参数,且必须是以''\0''结尾的。

例如:char a[]=”a”; sizeof(a)结果是2,包括了结束符’\0’,而strlen(a)的结果是1,不包括结束符’\0’.

Char *a=”a”;sizeof(a)的结果是4,值得是指针变量a的内存大小,strlen(a)的大小即为字符串的长度,为1,系统是自动为字符串其后添加结束符‘\0’的。

70. .dll文件简介

答:dll(Dynamic Link Library),动态链接库文件,是一种可执行文件,它允许程序共享执行特殊任务所必需的代码和其他资源。Windows提供的DLL文件中包含了允许基于Windows的程序在Windows环境下操作的许多函数和资源。

71. 含参数的宏与函数调用的区别

宏替换不占运行时间,只占编译时间;而函数调用则占运行时间(分配单元、保留现场、值传递、返回),所以每次执行都要载入所以执行起来比较慢一些。

72. C语言宏定义中的#,##,#@及\符号的作用

(1)# (stringizing)字符串化操作符

作用:将传入的形参翻译成字符串,如define example1(instr) #instr,在代码中将string str=example1(abc); 翻译成:string str="abc";

(2)## (token-pasting)符号连接操作符

作用:将宏定义的多个形参转换成一个实际参数,如#define exampleNum(n) num##n 在代码中将int num=exampleNum(9); 被翻译成 int num=num9;

(3)#@ (charizing)字符化操作符

作用:将传入单字符参数名转换成字符,以一对单引号括起来。

如:#define makechar(x) #@x,在代码中将 a = makechar(b);翻译成a= 'b';

(4)\ 续行操作符

当定义的宏不能用一行表达完整时,可以用""表示下一行继续此宏的定义。注意\前留空格。

73.逻辑左移和算数左移的区别

答:算术左移和算术右移主要用来进行有符号数的倍增、减半;

逻辑左移和逻辑右移主要用来进行无符号数的倍增、减半。

逻辑左移=算数左移,右边统一添0;

逻辑右移,左边统一添0;

算数右移,左边添加的数和符号有关。

74.字节序的分类

答:字节序,顾名思义字节的顺序,再多说两句就是大于一个字节类型的数据在内存中的存放顺序(一个字节的数据当然就无需谈顺序的问题了)。

字节序分为三种:

a)小端字节序(Little-Endian)就是低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。最符合人的思维的字节序。

b) 大端字节序(Big-Endian)就是高位字节排放在内存的低地址端,低位字节排放在内存的高地址端。最直观的字节序,因为系统从内存中读数据是从低地址到高地址,读出的数据就是我们直观看到的数据,无需考虑位的对应关系。

c) 网络字节序:4个字节的32 bit值以下面的次序传输:首先是0~7bit,其次8~15bit,然后16~23bit,最后是24~31bit。这种传输次序称作大端字节序。由于TCP/IP首部中所有的二进制整数在网络中传输时都要求以这种次序,因此它又称作网络字节序。比如,以太网头部中2字节的“以太网帧类型”,表示后面数据的类型。对于ARP请求或应答的以太网帧类型来说。

75.常量数值后缀

答:数值常数有:整型常数、浮点常数;

整型常数的后缀有:u或U(unsigned)、l或L(long)、u/U与l/L的组合(如:ul、lu、Lu 等)。例:100u; -123u; 0x123l;

浮点常数的后缀有:f或F(单精度浮点数)、l或L(长双精度浮点数)。(注:因浮点型常数总是有符号的,故没有u或U后缀)。例:1.23e5f; 1.23l; -123.45f。

76. 句柄的作用

答:句柄(Handle),是整个windows编程的基础。一个句柄是指使用的一个唯一的整数值,即一个四字节长的数值,来标识应用程序中的不同对象和同类对象中的不同的实例,诸如,一个窗口,按钮,图标,滚动条,输出设备,控件或者文件等。句柄的由来是由于对象物理地址不停的变更,以虚拟内存方式配置整体系统的资源进而提升效率性能提。

77.VC++6.0生成后编译后生成的.pdb文件的作用

答:.pdb文件是Program Debug Database(程序调试数据库)文件,包含了编译后程序指向源代码的位置信息,用于调试的时候定位到源代码,主要是用来方便调试的。

78.C语言程序编译执行的过程

答:第一步:预处理:对预编译指令进行处理,如#define和#include指定的内容包含到C 程序源文件中,生成一个非常完整的C语言源程序。

第二步:编译:编译器对预处理之后的文件进行编译,进行词法分析和语法分析,编译成汇编指令文件。

第三部:汇编:汇编过程是处理汇编语言的阶段,将汇编语言翻译成二进制机器代码的过程,生成目标二进制文件,作为下一步连接过程的输入文件。

第四步:链接:链接是将目标文件与系统文件(资源、模块/函数等)链接组合生成可执行文件,后缀名为.exe。

79. C语言跟内存分配方式

(1)从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。

(2)在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。

(3)从堆上分配,亦称动态内存分配。程序在运行的时候用malloc或new申请任意多少的内存,程序员自己负责在何时用free或delete释放内存。动态内存的生存期由我们决定,使用非常灵活,但问题也最多

C语言跟内存申请相关的函数主要有 alloca,calloc,malloc,free,realloc,sbrk等.

其中alloca是向栈申请内存,因此无需释放. malloc分配的内存是位于堆中的,并且没有

初始化内存的内容,因此基本上malloc之后,调用函数memset来初始化这部分的内存空间.

80. PS:为了更好的理解内存分配,我们可以了解一下内存分区

1)栈区(stack)- 由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。

2)堆区(heap) - 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收 .

3)全局区(静态区)(static)-,全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。 -程序结束后有系统释放。注意:全局区又可分为未初始化全局区:.bss段和初始化全局区:data段。

4)常量区-常量字符串就是放在这里的。程序结束后由系统释放

5)代码区-存放函数体的二进制代码。

81. C语言的内存分配函数有:

与malloc,calloc,realloc和alloca。

malloc:从堆上分配指定大小的字节数并返回void类型,需要程序员来手动释放,且malloc 分配的内存不能跨进程调用。

calloc:分配指定数目的元素,每个元素的大小由size指定。

alloca:是在栈(stack)上申请空间,用完马上就释放。

realloc:重新分配内存并返回void类型,如果没有足够的内存扩展内存块,则原来的指向的内存指针无变化,并返回NULL;如果重新分配大小设为0,而释放原来的内存块,并返回NULL.

82.strcpy和memcpy主要有以下3方面的区别。

用法:memcpy(temp_str3, temp_str2, 9);

区别:复制的内容不同。strcpy只能复制字符串,而memcpy可以复制任意内容,例如字符数组、整型、结构体、类等。memcpy可指定长度,strcpy可全拷贝。

83. snprintf()函数的用法

格式:int snprintf(char *str, size_t size, const char *format, ...);

作用:将可变个参数(...)按照format格式化成字符串,然后将其复制到str中,复制的字符个数最多为size-1.因为要加上结束符号\0.

若成功则返回欲写入的字符串长度,若出错则返回负值。

84.strcmp函数的比较

当s1

当s1==s2时,返回值等于0

当s1>s2时,返回正数注意不是1

即:两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇'\0'为止。返回值是第一个不同字符的ASCII码值得差。

85. C语言的开发环境

答:VS2005 就是Visual Studio 2005 是VC++2005、VB2005,C#2005合在一起的一个集成开发环境。

Windows环境下:C语言的开发环境有Turbo C、GCC、C++Builder、VC++6.0、VS2005、VS2008、VS2010、VS2012、VS2013至VS的未来版本.

Linux环境下:用VI和GCC(编译器)和KDevelop或者eclipse。

IDE:是Integrated Development Environment,集成开发环境。

86.MFC是什么?

MFC(Microsoft Foundation Classes),是一个微软公司提供的类库(class libraries),以C++类的形式封装了Windows的API,并且包含一个应用程序框架,以减少应用程序开发人员的工作量。其中包含的类包含大量Windows句柄封装类和很多Windows的内建控件和组件的封装类。

87.#ifndef是什么?

答:#ifndef LVLV是if not define的简写,是宏定义的一种,若LVLV没有被宏定义,则进行宏定义。

88.Xshell 是什么?

答:一个强大的安全终端模拟软件,它支持SSH1, SSH2, 以及Microsoft Windows 平台的TELNET 协议。Xshell 通过互联网到远程主机的安全连接以及它创新性的设计和特色帮助用户在复杂的网络环境中享受他们的工作。

《语言学教程》中文笔记(完整)

语言学教程笔记 第一章语言学导论 语言的定义特征:从本质上将人类语言与动物语言区分开的人类语言的区别性特点。 1. 任意性:任意性是指语言符号的形式与所表示的意义没有天然的联系,任意性是语言的核 心特征。例如,我们无法解释为什么一本书读作 a /buk/,一支钢笔读作a /pe n/。 任意性具有不同层次:(1)语素音义关系的任意性。(2)句法层面上的任意性。 (3) 任意性和规约性。 2. 二层性:二层性是指拥有两层结构的这种特性,上层结构的单位由底层结构的元素构成, 每层都有自身的组合规则。话语的组成元素是本身不传达意义的语音,语音的唯一作用就是 相互组合构成有意义的单位,比如词。因为底层单位是无意的,而上层单位有明确的意义,所以我们把语音叫做底层单位,与词等上层单位相对。二层性使语言拥有了一种强大的能产 性。 3. 创造性:创造性指语言的能产性,指语言有制造无穷长句的潜力,这来源于语言的二层性 和递归性。利用二重性说话者可以通过组合基本语言单位,无止境地生成句子,大多数都是以前没有过的或没有听过的。 4. 移位性:是指人类语言可以让使用者在交际时用语言符号代表时间上和空间上并不可及的 物体、时间或观点。因此我们可以提及孔子或北极,虽然前者已经去世两千五百五十多年而 后者位置距我们非常之远。语言使我们能够谈及已不存在或还未出现的事物。移位性赋予人 们的概括与抽象能力使人类受益无穷。词在指称具体物体时,并不总是出现在即时、形象化 的语境中。他们通常为了体现指称含义而被使用。 5. 文化传递性:语言不是靠遗传,而是通过文化传递的。 6. 互换性:指人可以是信息的发出者,也可以是信息的接受者,即人作为说话者和听话者的 角色是可以随意更换的。 元语言功能:我们的语言可以用来讨论语言本身。比如说,我可以用“书”指代一本书,也可以用“书这个词”来指代“书”这个词本身。这使语言具有无限的自我反身性:人类可以谈论“说话”,也可以思考“思考"。所以只有人类才能提问:元语言功能对交际、思考及人类的意义是什么?

“英语”语言学概论第六章笔记

Chapter 6 Pragmatics 语用学 1.What is pragmatics? 什么是语用学? Pragmatics can be defined as the study of how speakers of a language use sentences to effect successful communication. As the process of communication is essentially a process of conveying meaning in a certain context, pragmatics can also be regarded as a kind of meaning study. It places the study of meaning in the context in which language is used. 语用学研究的是说某种语言的人怎样用句子去实现成功的交际。 由于交际的过程从本质来说是在一定的语境中表达意义的过程,因而语用学的本质是一种意义研究。它是一种将语言置于使用的语境中去的意义研究。 2.Pragmatics and semantics 语用学和语义学 Pragmatics and semantics are both linguistic studies of meaning, but they are different. What essentially distinguishes semantics and pragmatics is whether in the study of meaning, the context of use is considered. If it is not considered, the study is restricted to the area of traditional semantics; if it is considered, the study is being carried out in the area of pragmatics. 语用学和语义学都是对意义的语言学研究,但两者是不同的。它们的本质区别在于研究意义时是否考虑了语言使用的语境。没有考虑到语境进行的研究就没有超出传统语义学的研究范围;相反,考虑到语境进行的研究就属于语用学的研究范围。 3.Context 语境 Context is essential to the pragmatic study of language. It is generally considered as constituted by the knowledge shared by the speaker and the hearer. 语境是语言的语用研究中不可缺少的概念。它一般被理解为说话者和听话者所共有的知识。The shared knowledge is of two types: the knowledge of the language they use, and the knowledge about the world, including the general knowledge about the world and the specific knowledge about the situation in which linguistic communication is taking place. 共有的知识包括他们所使用的语言方面的知识和双方对世界的认识,包括对世界的总的认识和对正在进行的语言交际所处的环境的具体认识。 4.Sentence meaning and utterance meaning 句子意义和话语意义The meaning of a sentence is abstract, and de-contextualized, while utterance meaning is concrete, and context-dependent. Utterance is based on sentence meaning; it is the realization of the abstract meaning of a sentence in a real situation of communication, or simply in a context. 句子的意义是抽象的,非语境化的,而话语的意义是具体的,受语境制约的。话语意义基于句子意义;它是一个句子的抽象意义在特定语境中的具体体现,或简而言之,在一个语境中的具体化。 5.Speech act theory 言语行为理论 Speech act theory is an important theory in the pragmatic study of language. It was originated with the British philosopher John Austin in the late 50’s of the 20th century. 言语行为理论是语言语用研究中的一个重要理论。它最初是由英国哲学家约翰.奥斯汀在20世纪50年代提出的。 According to speech act theory, we are performing actions when we are speaking.

普通语言学教程笔记(索绪尔)

《普通语言学教程》索绪尔 绪论 第一章语言学史一瞥 语法(规范)-语文学(过于注重书面语)-比较语文学或比较语法(只比较)-新语法学派(语言集团集体精神的产物) 第二章语言学的材料和任务;与毗邻科学的关系 语言学的任务是:a 对一切能够得到的语言进行描写并整理他们的历史,尽可能重建每个语系的母语;b 寻求在一切语言中永恒地普遍地起作用的力量,整理出能概况一切历史特殊现象的一般规律;c 确定自己的界限和定义。它与社会心理学、生理学、语文学相关。语言学也有实际用途,特别是对于那些利用文献的人,另外对一般修养也很重要。 第三章语言学的对象 定义——在任何时候,语言都是现行制度和过去的产物。我们的研究方法是一开始就站在语言的阵地上,把它当做言语活动的其他一切表现的准则。语言和言语活动不能混为一谈,它只是言语活动的一个确定的部分,而且当然是一个主要部分,它既是言语机能的社会产物,又是社会集团为了使个人有可能行使这机能所采用的一整套必不可少的规约。语言本身是一个整体,一个分类的原则。它是一种约定俗成的东西,人们同意使用什么符号,这符号的性质是无关轻重的。对人类天赋的不是口头的言语活动,而是构成语言——即一套和不同的观念相当的不同的符号——的机能。人们说话的机能——不管是天赋的或非天赋的——只有借助于集体所创造和提供的工具才能运用,所以,说语言使言语活动成为统一体,绝不是空想。 语言在言语活动事实中的地位——言语循环重建:心理现象-生理过程-物理过程-生理过程-

心理现象 (c-i)这一主动过程称为执行部分,(i-c)这一被动过程称为接受部分,此外还有联合和配置的机能。语言是社会的、主要的,言语是个人的、偶然的、从属的。 语言的特征是:1 他是言语活动事实的混杂的总体中的一个十分确定的对象,是言语的社会部分。2 语言是人们能够分出来加以研究的对象。3 言语是异质的,而规定下来的语言是同质的,它是一种符号系统,在系统中,只有意义和音响形象的结合是主要的,符号的两个部分都是心理的。4 语言这个对象在具体性上比言语毫不逊色。即是音响形象的堆叠,又可转为文字。 语言在人文事实中的地位:符号学——语言是一种表达观念的符号系统。符号在本质上是社会的。 第四章语言的语言学和言语的语言学

杨忠《语言学概论》笔记

Chapter 1 Introduction Ⅰ.What is language? 1. Different definitions of language (1) Language is a system whose parts can and must be considered in their synchronic solidarity. (de Saussure, 1916) (2) [Language is] a set (finite or infinite) of sentences, each finite in length and constructed out of a finite set of elements. (Chomsky, 1957) (3) Language is a purely human and non-instinctive method of communicating ideas, emotions and desires by means of voluntarily produced symbols. 2. Each of the definitions above has pointed out some aspects of the essence of language, but all of them have left out something. We must see the multi-faceted nature of language. 3. As is agreed by linguists in broad terms, language can be defined as a system of arbitrary vocal symbols used for human communication. Ⅱ.Features of human language 1. Creativity (1) Language provides opportunities for sending messages that have never been sent before and for understanding brand new messages. (2) The grammar rules and the words are finite, but the sentences are infinite. Every speaker uses language creatively. 2. Duality (1) Language contains two subsystems, one of sounds and the other of meanings. (2) Certain sounds or sequences of sounds stand for certain meanings. (3) Certain meanings are conveyed by certain speech sounds or sequences of speech sounds. 3. Arbitrariness (1) The relationship between the two subsystems of language is arbitrary. (2) There is no logical connection between sound and meaning. 4. Displacement (1) There is no limit in time or space for language. (2) Language can be used to refer to things real or imagined, past, present or future. 5. Cultural transmission (1) Culture cannot be genetically transmitted. Instead, it must be learned. (2) Language is a way of transmitting culture. 6. Interchangeability All members of a speech community can send and receive messages. 7. Reflexivity (1) Human languages can be used to describe themselves. (2) The language used to talk about language is called meta-language. Ⅲ.Functions of language – three meta-functions 1. The ideational function

《普通语言学教程》读书笔记

《普通语言学教程》读书笔记 10级汉语3班徐星星100322 本书著者是本世纪最著名、影响最深远的语言学家之一费尔迪南·德·索绪尔,在本书中,他对欧美语言学界所接触到的各种有关原理和方法的问题都作了总结,并且提出了自己独到的见解。这本书的影响也遍及世界。 首先在绪论的第三章中,索绪尔向我们阐释了语言的定义: 语言是一种约定俗成的东西,人们同意使用什么符号,这符号的性质是无关轻重的。即一套和不同的观念相当的不同的符号。人们说话的机能只有借住集体创造和提供的工具才能运用,不管是天赋的或非天赋的。所以说,说语言使言语活动成为统一体,那绝不是什么空想。在索绪尔看来。语言是语言共同成员中的语法体系,言语则是人们平时说的那些话,是依赖于语法系统的说话行为。言语是语言的体现。语言学研究实际语言行为中所潜藏的形式系统,因此,在索绪尔看来,语言学的对象是语言而不是言语。 索绪尔认为,把语言和言语分开,我们就把什么是社会的,什么是个人的,什么是主要的,什么是从属的和偶然的区分开来了。照此看来,语言学家主要的研究对象应该是“语言”、确定构成“语言”的单位及其组合规则,而不是去描写言语活动。“语言”是一个符号的系统,在这个系统中,只有意义和音响的形象的结合是主要的。 索绪尔为了确立语言学的研究对象,区分出“语言”和“言语”,他的“语言”和“言语”理论不仅对本世纪的语言研究的方法产生了深刻的影响,而且还影响着文学和符号学研究。 在第一编中,索绪尔指出语言是一个符号系统。语言是符号学的一部分,他强调语言具有一般符号系统的主要特征。语言与其他一切同类的的符号系统有以下几点共同点。一是目的相同,各种符号系统虽然采用的手段不同,复杂程度不同,但目的都是一样的,都是为了传递信息。二是它们的内涵相同,一切符号系统之所以能传递信息是因为它们与意义相联系。意义是符号的内涵,是符号在使用该系统的人在头脑中激发的概念。三是构成元素相同,无论使用

语言学概论 精讲一官方笔记

语言学概论第一节课官方笔记目录 一、课件下载及重播方法 二、本章/教材结构图 三、本章知识点及考频总结 四、配套练习题 五、其余课程安排 一、课件下载及重播方法 二、教材节构图

三、本章知识点及考频总结 第一部分语言和语言学 ◆模块一认识人类的语言 知识点一语言的性质和类型 (一)语言的概念 语言是一种符号系统,是由语音和语义构成的符号系统,是人类进行社会交际和思维认知的工具。 (二)人类语言与其他动物鸣叫系统的区别是: 1、内容更多: 表达无极限(时间、空间),想说、可说、能说。 2、用处更大: 交际、标志、记录、思维、认知等功能。 3、能够创造: 极强的生成能力和极高的运转效率。

注意:只有人类才有语言人类具有语言能力,是人跟其他动物区别的最重要的标志 (二)语言和民族、国家的关系 确定不同的语言,首先涉及的是语言跟民族和国家的关系 1.语言是识别民族和国家的标志——“相互能够听懂”(欧洲国家) 相同民族——相同语言;同一国家——同一语言 2.语言并非识别民族和国家的标志(欧洲以外的国家) 犹太人的语言与民族身份;海外华人的民族身份与语言;满族与满语 3.西方学界的双重标准——“相互能够听懂” 弱国——用语言识别民族;对“汉语”的看法。 强国——不用语言识别民族,美国、英国、澳大利亚和加拿大 (三)语言的特点和语言类型 1、语言的特点 不同的语言有自己的特点,各种语言在语音、词汇、语法方面差距显著。根据语言的特点,把语言进行分类,主要有“语言的谱系分类”和“语言的形态分类” 2、语言的类型 (1)语言的谱系分类

从语言的“历时”角度划分不同的语言,建立“语言的谱系分类”, 即语言的亲属关系分类。根据各种语言在语音、语汇、语法等方面是否有共同的来源和相似性的大小对语言进行的分类。 谱系分类是一个层级系统:语系—语族—(语支)—语言—方言—次方言(土语) 语系:语系是谱系分类中最大的类,语系、语族、语支、语群这种谱系分类的层级体系,反映了原始基础语随着社会的分化而不断分化的历史过程和结果。 世界上的语言大致分为七、八个语系。印欧语系和汉藏语系(区别在于是否有区分意义的声调和词的形态变化)语族:语系的下一级叫语族,同一语族的语言不但有相同的来源,相似点也更多,如印欧语系下分印度语族、伊朗语族、日耳曼语族等。 (2)语言的形态分类 即语言的结构类型分类。主要分为两种: ①形态语(综合性语言) 通过词的形态变化来体现各种结构意义的语言,主要有屈折语(词的形态变化丰富,如德语、俄语)、黏着语(词的形态变化为前后词缀,如维吾尔语、日语) ②孤立语(分析性语言)——汉语 语法手段无需谓词词形变化表现“时、体、态”;无需

胡壮麟语言学教程期末考试复习专用笔记(老师画的重点-自己整理的)

Chapter 1 Invitations to Linguistics 1.1 Why study language? 1. Language is very essential to human beings. 2. In language there are many things we should know. 3. For further understanding, we need to study language scientifically. 1.2 What is language? 1.3 Design features of language The features that define our human languages can be called design features which can distinguish human language from any animal system of communication. 1.3.1 Arbitrariness 1.3.2 Duality 1.3.3 Creativity Creativity means that language is resourceful because of its duality and its recursiveness. Recursiveness refers to the rule which can be applied repeatedly without any definite limit. The recursive nature of language provides a theoretical basis for the possibility of creating endless sentences. 1.3.4 Displacement 1.4 Origin of language

《语言学纲要》(叶蜚声_徐通锵)详细复习资料_课堂讲义笔记

语言学纲要讲义笔记 导言 一、语言的定义 语言是人类最重要的交际工具和思维工具、是由音义结合的词汇和语法构成的一种符号系统。 二、语言学的对象和任务 语言学是研究语言的科学。 要把语言学跟语文学区分开来 中国传统语文学——“小学” 小学是我国古代语文学的统称,由训诂学、文字学、音韵学三部分组成。 在古印度,公元前4世纪,著名学者潘尼尼在整理、注释婆罗门教经典《吠陀》时,写了一本《梵语语法》,提出3996条规则,被人们称为最完备的语法书。在古希腊,伯拉图和亚里斯多德是从哲学的角度来研究语言的,他们讨论了词为什么具有意义等内容。 三、语言学在科学体系中的地位 语言学既是一门古老的科学,又是一门年轻的科学。 1、与社会科学、自然科学的联系 语言研究的成果是哲学、历史学、考古学、文学、政治学、经济学、逻辑学、社会学、民族学、计算机科学等学科所必须利用的,可见语言研究在这些社会科学中已占重要地位。 语言学与其他学科相交叉产生社会语言学、心理语言学、计算语言学、生物语言学、模糊语言学、实验语音学等。如:运用语言传递信息的过程,可分为五个阶段: 编码——发送——传递——接收——解码 对这一具体过程的解释需要结合物理学、生理学、心理学等其他学科的知识。三、语言学的基本类别 总体上,根据研究对象的不同,语言学可以分为理论语言学和应用语言学两大类。(一)理论语言学可分为: 1、一般/普通语言学

2、个别/具体语言学 具体语言学 (1)历时语言学 (2)共时语言学 (二)应用语言学 1、社会语言学:研究语言与社会集团的关系。如地域方言、社会方言、语言的接触、语言规划等。 2、心理语言学:研究儿童语言习得、语言的接收和发生过程,等。 3、神经语言学 最近二十年才从心理语言学中分离出来的一门新的学科,主要研究语言和大脑结构的关系,中心是大脑如何生成语言。 此外,还有数理语言学、统计语言学、实验语音学等。 第一章语言的功能 第一节语言的社会功能 一、语言的信息传递功能 信息传递功能是语言的最基本的社会功能。 人类还借助语言之外的其他形式传递信息,它们是文字,旗语,信号灯,电报代码,数学符号,化学公式等等。 身势等伴随动作等是非语言的信息传递形式。 身势等非语言的形式多半是辅助语言来传递信息; 文字是建立在语言基础之上的最重要的再编码形式; 旗语之类是建立在语言或文字基础之上的再编码形式; 语言是人类社会信息传递第一性的、最基本的手段,是最重要的交际工具。二、语言的人际互动功能 语言的社会功能的另一个重要方面是建立或保持某种社会关联,这就是语言的人际互动功能。互动包括两个方面:一个是说话者在话语中表达自己的情感、态度、意图,另一方面这些又对受话者施加了影响,得到相应的语言或行动上的反馈,从而达到某种实际效果。

语言学概论笔记自考(一到九章)

语言学概论笔记 第一章:语言和语言学 一、识记内容。 1口语:语言的客观存在形式首先是有声的口头语言。 2、书面语:文字出现以后,语言的第二种客观存在形式。 3、符号:指的是根据社会的约定俗成使用某种特定的物质实体来表示某种特定的意义而形成的这种实体和意义的结合体。 4、能指:语言符号的物质实体能够指称某种意义的成分。 5、所指:也就是“能指成分”,即特定的物质实体,所指的意义内容。 6、聚合关系:在同一个位置上可以互相替换出现的各个语言单位处在互相可以联想起来的关系之中,因而聚合成为一个类。 7、组合关系:组合关系体现为一个语言单位和前一个语言单位或后一个语言单位,或和前后两个语言单位之间的关系,也体现了部分与整体之间的关系。 8、语言学:是研究语言的科学。 9、普通语言学:语言学界把研究人类社会的语言这种社会现象的一般理论。 10、理论语言学:把研究某种具体语言的语言学称为汉语语言学或英语语言学等等,把侧重理论探讨的称为理论语言学。 11、应用语言学:把侧重语言学理论和成果的实际应用。 12传统语言学:一般泛指20世纪以前的语言学,特别是指索绪尔开创的结构主义语言学以前的语言学。13结构主义语言学:索绪尔创立的语言学可以称为“结构主义语言学”,至于我国内常说的“结构主义语言学”、“结构主义语法”,往往只是指在国外影响较大并且我国语言学界比较熟悉的美国结构主义描写语言学,那只是当代结构主义语言学的一个流派,并不等于受索绪尔影响的整个结构主义语言学。 二、领会内容(不用识记,大体知道即可)

1、言语交际是一个编码和解码的过程。 答:人要说话所需要的因素:生活经历、社会环境、当前处理的问题、社会问题、文化问题、哲学问题、逻辑问题。人要接受语言所需要的因素:组织与分析的能力、心理、生理问题;发音、听音的器官和神经网络及机制和能力;复杂的生理和物理问题。总之一句话,言语交际是通过许多因素对语言进行编码和解码的过程,言者编码,听者解码。“码”即所谓的言语。 2、书面语和口语的主要差别。 答:书面语比口语多了一些成分,是那些口语所特有的面部表情、手势和体态,还有口气和语调用书面的文字语言来描述出来的成分,也就是书面语补上的某些省略以后影响理解的成分。用二者的一致性来分析可以用公式理解:口语的基本语言成分=书面语的基本语言成分+用书面描写的口语非语言成分。 3、书面语的产生具有重大的社会历史意义。 答:书面语克服了人和人之间进行交际、传递信息和交流思想感情在空间和时间方面的限制,极大地加快了人类社会经验和知识积累的速度和传播的范围,从而大大加快了社会发展的步伐。 4、语言和种族的关系。 答:二者没有必然的联系,根本原因是:语言能力和生理因素、心理因素有关,但是语言是一种社会现象,完全是在一定的语言环境中后天获得的,所以语言和种族没有必然联系。 5、语言与各个领域的社会活动都有着密切的联系,在这种情况下,语言学必须明确自己的研究对象,才能成为一门现代意义上的科学。 答:语言客观存在形式是极其多样化的,可以从各个不同的角度,根据不同的需要,去研究客观存在的语言的各个不同的方面。要形成一门现代意义上的科学首先要有明确的研究对象,然后才有可能形成自己完整的理论体系和方法论体系,那样才能成为一门现代意义上的科学。如果研究对象长期不确定、不明确,或者研究对象太杂,范围太宽,研究就不可能深入,就不可能形成自己的理论体系和方法论体系。 6、语言和言语的区别。

索绪尔及其《普通语言学教程》之心得

费迪南德?德?索绪尔(Ferdinand de Saussure,1857-1913)是现代语言学的创始人。他是一位杰出的语言学家。作为一门新兴人文学科的开创者,他对语言哲学的影响也极为广泛深刻。 索绪尔出生于日内瓦,父亲是一位科学家。他从小受到自然科学的教育,同时也得到良好的语言教育和语言学教育,掌握法语、德语、英语和拉丁语,初通梵文。15岁时就写了一篇《语言论》。曾于日内瓦大学和莱比锡大学,研习物理、化学和希腊文。莱比锡大学当时是新语法学家的中心,在那的学习大致确定了索绪尔后来以语言学为业的道路。也就在这个时期,他发表了他的第一篇重要论文,《论印欧系语言中原因的原始系统》,引起学术界的重视,而那时他才年仅21岁。获得博士学位后,索绪尔移居巴黎,在高等研究学院讲授梵文、哥特语、古高地德语以及印欧语文学概况。1891年,他开始到日内瓦大学任教。日内瓦与巴黎的学术研究相比相对滞后。索绪尔穷究一生,不带任何传奇色彩。他在世时只是著名的语言学家,但他作为一个哲学家的地位,却是直到他死后才为人们所认可的。 索绪尔生前只发表过很少几篇相当专业的论文。1907-1911年期间,他在日内瓦大学担任普通语言学课程的教学。1913年他去世以后,他的学生和同事根据几本听课笔记才汇编成《普通语言学教程》一书,出版发行。索绪尔不仅吝于发表,他留下的笔记也很少,因此编辑这本书很不容易。因为,跟所有的老师一样,他讲课时也是有很多重复,甚至不一致的内容。难得的是编辑者们没有放弃,合并梳理成一本书,从而造就了一部惊世巨著。 《普通语言学教程》这部著作主要由绪论和附录两部分组成。绪论部分主要阐述了索绪尔对于语言系统的看法。索绪尔认为语言系统具有自主性和形式化这两个特点。他把语言现象划分为“内部要素”和“外部要素”两部分,并以此作为语言研究的前提。“内部要素”是指语言系统内符号与符号之间所形成的相互制约、相互对立的关系;“外部要素”则是指与语言有间接关系的政治、经济、文化、宗教、地理、历史等社会因素。因为索绪尔认为“内部要素”与“外部要素”之间无联系,且进行语言研究必须建立起一个界限清晰的“语言系统”。所以,他说:“我们关于语言的定义是要把一切跟语言的组织、语言的系统无关的东西,简言之,一切跟我们用‘外部语言学’这个术语所指的东西排除出去。”另外,索绪尔还阐发了“语言符号的价值决定于语言系统整体性质”的观点,并将此观点以及上面所提及的观点合在一起,共同支撑起关于语言系统具有自主性的说法。实际上,此举的真正目的是为语言学的研究对象下定义,且以此厘清语言和言语之间的关系。 语言是言语行为的社会部分,是个人被动地从社会接受而储存于头脑中的系统。它存在于个人意志之外,是社会每个成员共同具有的,是一种社会心理现象。言语是言语行为的个人部分,是个人对语言系统的运用。语言和言语紧密相连,互为前提。个人要说话使人理解,必须用语言,同时语言的存在又必须体现在言语当中,而且,使语言发生变化的也是言语。所以,语言既是言语的工具,又是言语的产物,但“这并不妨碍它们是两种绝对不同的东西” 在对语言学进行概述之后,《普通语言学教程》的附录部分进一步详细叙述了索绪尔的音位观、符号观以及结构主义研究方法论。他认为语言可为语音符号和文字符号,语音由心灵激活而被赋予意义,文字则只是语音的无生命的、随意的、可有可无的替代物。在符号观中,索绪尔对符号的“任意性”和“线条性”展开阐述,并且重点论述了符号的“不变性”与“可变性”特点。由此他不但揭

普通语言学教程笔记(索绪尔)

普通语言学教程笔记(索绪尔)

《普通语言学教程》索绪尔 绪论 第一章语言学史一瞥 语法(规范)-语文学(过于注重书面语)-比较语文学或比较语法(只比较)-新语法学派(语言集团集体精神的产物) 第二章语言学的材料和任务;与毗邻科学的关系语言学的任务是:a 对一切能够得到的语言进行描写并整理他们的历史,尽可能重建每个语系的母语;b 寻求在一切语言中永恒地普遍地起作用的力量,整理出能概况一切历史特殊现象的一般规律;c 确定自己的界限和定义。它与社会心理学、生理学、语文学相关。语言学也有实际用途,特别是对于那些利用文献的人,另外对一般修养也很重要。 第三章语言学的对象 定义——在任何时候,语言都是现行制度和过去的产物。我们的研究方法是一开始就站在语言的阵地上,把它当做言语活动的其他一切表现的准则。语言和言语活动不能混为一谈,它只是言语活动的一个确定的部分,而且当然是一个主要部

分,它既是言语机能的社会产物,又是社会集团为了使个人有可能行使这机能所采用的一整套必不可少的规约。语言本身是一个整体,一个分类的原则。它是一种约定俗成的东西,人们同意使用什么符号,这符号的性质是无关轻重的。对人类天赋的不是口头的言语活动,而是构成语言——即一套和不同的观念相当的不同的符号——的机能。人们说话的机能——不管是天赋的或非天赋的——只有借助于集体所创造和提供的工具才能运用,所以,说语言使言语活动成为统一体,绝不是空想。 语言在言语活动事实中的地位——言语循环重建:心理现象-生理过程-物理过程-生理过程-心理现象

(c-i)这一主动过程称为执行部分,(i-c)这一被动过程称为接受部分,此外还有联合和配置的机能。语言是社会的、主要的,言语是个人的、偶然的、从属的。 语言的特征是:1 他是言语活动事实的混杂的总体中的一个十分确定的对象,是言语的社会部分。2 语言是人们能够分出来加以研究的对象。 3 言语是异质的,而规定下来的语言是同质的,它是一种符号系统,在系统中,只有意义和音响形象的结合是主要的,符号的两个部分都是心理的。 4 语言这个对象在具体性上比言语毫不逊色。即是音响形象的堆叠,又可转为文字。 语言在人文事实中的地位:符号学——语言是一种表达观念的符号系统。符号在本质上是社会的。 第四章语言的语言学和言语的语言学

语言学概论00541史上最全(吐血整理) 汇总 简单题+名词解释 小抄笔记

27.书面语:书面语是用文字记录的语言形式,它是文字产生或在口语的基础上产生的,书面语是经过加工、提炼和发展了的口语的书面形式。 26.口语:就是有声的口头语言,任何一种语言都有口头存在形式。它是书面产生的基础。 28.语言相关论:语言相关论是萨丕尔和沃尔夫提出的关于语言与思维关系的观点,主张语言决定思维,不同的语言就有不同的思维方式。 29.大脑语言功能临界期:大脑语言功能临界期是指大脑的单侧化,大脑左半球的分区以及语言的遗传机制,都只提供人具有语言能力的潜在可能性,这些潜能必须在一定期限内被一定的语言环境激活才可能起作用。26.语言符号的所指 :语言符号的所指是符号的形式所指的意义内容。 29.机器翻译:通过计算机把一种语言自动翻译成另一种或多种自然语言的信息处理技术。 26.语音:语音是人的发音器官发出的、用于人与人之间交际并表达一定意义的声音。 27.词:词是最小的、有意义的、能够独立运用的语言单位。 28.语用:语用指语言运用,即人们在一定的交际环境中对语言的实际运用。 29.文字:文字是记录语言的书写符号系统。 27.单纯词:单纯词是由一个构词语素构成的词。 29.屈折:屈折是通过词的内部发生语音的交替变换来改变词的语法意义的手段。 28.意译词:是用本族语言的构词材料和规则构成新词,把外语中某个词的意义翻译过来。 27.仿译词:是用本族语言的语素逐个对译外语原词的语素造成的词,它不仅把原词的词义翻译过来,而且保持了原词的内部构成方式。 29.主谓词组:两个成分之间具有被说明和说明关系的词组是主谓词组。 27.复辅音:一个音节内处于同一个肌肉紧张的渐强阶段或渐弱阶段上的两个或两个以上辅音的组合。 27.双语现象:某一言语社团使用两种或多种语言的社会现象,具体而言是社团内的全体成员或部分成员双语并用的现象。 28.亲属语言:从同一种语言中分化出来的各个语言叫亲属语言,亲属语言之间具有历史同源关系。 26.调位:利用音节内的音高差别来起辩义作用的语音单位叫做调位,调位是一种非音质音位,依附在音位的组合序列上。 29.词组:实词与实词之间具有直接联系的相对独立的词群。 28.语素:语素是语言中音义结合的最小单位。 28.词尾:附着在词干后的,能改变词的语法形式,但不能构成新词的语素。 29.语素:音义结合的最小语言单位。 26.词类:词类是词在语法上的分类。它指可以替换出现在语法结构某些共同组合位置上的词的类,即具有聚合关系的词的类。 27.词法:(1)词法主要描写词的形态特征和词形变化规则。例如,俄语的名词在形式上有单数和复数的区别,有阳性、阴性、中性等性的区别,有主格、宾格、属格等格的区别,这些都是典型的词法现象。(2)由于印欧语言中构词单位、构词方式和词类都与词的形态变化相关,因此构词和词类问题也成为词法的一部分。27.语法意义:语法意义是语法形式所体现的意义,是语言中通过一类形式或功能所获得的意义。二者相辅相成,不可分离。如“动词+名词”有动宾关系的意义,汉语所有的同类组合都是如此,这种意义就是一种语法意义。 27.语法形式:语法形式就是能体现表达某种语法意义的形式。表示某一类语法意义或者有共同作用的形式,如词类形式、组合形式、虚词形式,就是语法形式。语法形式不是个别的语音形式和词语形式,但能产生某一类意义或者有共同作用的语音表现形式或者词形变化形式也是语法形式。 27.语法手段:根据语法形式的共同特点所归并的语法形式的基本类别叫做语法手段。语法手段可分为词法手段和句法手段两大类。通过词形的变化来表现语法意义的形式是词法手段;通过结构的变化来表现语法意义的形式是句法手段;例如英语名词后加s表示复数,英语动词后面加ed表示过去时,就是词法手段中的词形变化。 28.自源文字:自源文字指独立发展起来的文字。如古埃及文字、苏美尔文字、汉字,这些文字的形体、体系都是由最早使用该文字的人们独创的。 29.语音合成(1)语音合成是语音信息处理研究中的主要工作。 (2)语音合成就是让计算机模拟人的发音器官的动作并发生类似的声音。如汉语的语音合成目前已初步实现自动生成声韵调结合的音节。 26.句子:句子是词或词组按一定规则组合成的、能表达相对完整的意义、前后有较大停顿并带有一定的语气和句调的语言单位。 27.异化:语流中两个相同或相近的音,其中一个因受另一个影响而变得不相同或不相近。

戴伟栋语言学笔记(全)

Chapter 1 What is language? [A] The origins of language Some speculations of the origins of language: ①The divine source The basic hypothesis: if infants were allowed to grow up without hearing any language, then they would spontaneously begin using the original god-given language. Actually, children living without access to human speech in their early years grow up with no language at all. ②The natural-sound source The bow-wow theory: the suggestion is that primitive words could have been imitations of the natural sounds which early men and women heard around them. The “Yo-heave-ho” theory: the sounds produced by humans when exerting physical effort, especially when co-operating with other humans, may be the origins of speech sounds. Onomatopoeic sounds ③The oral-gesture source It is claimed that originally a set of physical gestures was developed as a means of communication. The patterns of movement in articulation would be the same as gestural movement; hence waving tongue would develop from

普通语言学教程读书笔记

《普通语言学教程》读书笔记在十一长假期间,我结合课上教学笔记和申小龙等编着的《普通语言学教程》精读,对《普通语言学教程》的一些内容做了比较肤浅的了解,虽难窥全貌,却也对某些内容有一些感想。 《普通语言学教程》是索绪尔关于自己在语言学上思想最为系统的阐述。包含了其对语言符号、共时语言学和历时语言学、语言组合关系和聚合关系等的理解,开创了结构主义,是一部划时代的着作。 由于对语言学了解尚浅,只是谈一下读后对言语与语言关系以及语言符号系统的理解。 对于语言与言语的关系。在尚未学习语言学课程之前,如果问我它们之间的关系,我会这样认为,语言包含言语,它是在大的范围下人们话语的总和,而言语则是小范围的、偏个体的。而通过阅读《教程》,我们可以一言以蔽之,语言和言语最主要的区分在于社会性。在《教程》绪论的第三章,“在任何人的脑子里,语言都是不完备的,它只有在集体中才能完全存在”。还是在第三章,“语言...它既是语言机能的社会产物,又是社会集团为了使个人有可能行使这机能所采取的一整套必不可少的规约”。即语言是在社会条件下人们约定俗成的一种规则,是在整个社会集体中起作用的,即“自然的秩序”。而相对于语言,言语则具有一种个人性,即“个人永远是它的主人”。一方面你必须遵守社会语言习惯,另一方面你说话则是有个人自由的,不过是在语言规则下的自由。举个例子,在汉语中,你可以说“我喝茶”,也可以说“我吃茶”,符合汉语语言习惯,你的说话是自由的。但你不能说“我茶喝”,这就违反了约定俗成的语言习惯,别人就很难理解了。当然,这只是从汉语角度举的例子,不排除其他语言中有这样的表达。“只有借助于集体所创造和提供的工具才能运用”,索绪尔在此表述的工具毫无疑问就是语言,比如说你有“我、喝、茶”这三个语言材料。你可以说“我喝茶”、“茶喝我”、“我茶喝”等,但只有我喝茶是符合语言习惯的,才能被人理解,其他的表述没有借助于汉语语言规则,是不能被运用的。 其次让我感兴趣的是索绪尔对语言符号系统的解读。符号是一定形式与内容的统一体,即能指与所指。而语言符号中声音即能指,意义指所指。在第一编第一章,索绪尔提出:“能指与所指的联系是任意的......,语言符号是任意的”。即单个语言符号的发音与意义之间没有必然联系,如表达“母亲”的意义,英语为“mom”,汉语则为“ma ma”。这让我想到了语言作为一种“自然的秩序”的社会性,不同语言之间由于社会习惯的不同使发音与意义之间的联系不同。我认为索绪尔在此提出的语言符号的任意性与语言社会性相关联,更论证了他的语言社会性学说,是对之前语言学上自然主义和心理主义的极大突破。 索绪尔在此还提出了语言符号的线条性。索绪尔认为:“它体现一个长度”、“这长度只能在一个向度上测定:它是一条线”。即单个语言符号之间为线性组合,只能一个跟着一个依次出现。既然不同的符号组合会产生不同的意义,所以我们必须了解它们整体间的关系。这由此引出了索绪尔对语言组合、聚合关系的探索,继而结构主义随之产生。索绪尔的结构主义思想、整体论观点可以说是不仅为以后语言学的发展做出了重要贡献,而且还广泛影响到了20世纪的哲学以及其他学科,充分显示出了语言学的基础性,也可以看出索绪尔的巨大贡献。 在阅读了部分章节后,我感觉索绪尔举例较为生动,如在第一编第一章,他举了“汉人从前用三叩九跪拜见他们的皇帝”这个例子,平浅地显示了社会性的

相关主题
文本预览
相关文档 最新文档