1. C语言中,算法的概念,广义的讲是什么意思
广义上讲就是程序除了数据就是算法
2. c语言指针的概念
指针是C语言中广泛使用的一种数据类型。 运用指针编程是C语言最主要的风格之一。利用指针变量可以表示各种数据结构; 能很方便地使用数组和字符串; 并能象汇编语言一样处理内存地址,从而编出精练而高效的程序。指针极大地丰富了C语言的功能。 学习指针是学习C语言中最重要的一环, 能否正确理解和使用指针是我们是否掌握C语言的一个标志。同时, 指针也是C语言中最为困难的一部分,在学习中除了要正确理解基本概念,还必须要多编程,上机调试。只要作到这些,指针也是不难掌握的。
指针的基本概念 在计算机中,所有的数据都是存放在存储器中的。 一般把存储器中的一个字节称为一个内存单元, 不同的数据类型所占用的内存单元数不等,如整型量占2个单元,字符量占1个单元等, 在第二章中已有详细的介绍。为了正确地访问这些内存单元, 必须为每个内存单元编上号。 根据一个内存单元的编号即可准确地找到该内存单元。内存单元的编号也叫做地址。 既然根据内存单元的编号或地址就可以找到所需的内存单元,所以通常也把这个地址称为指针。 内存单元的指针和内存单元的内容是两个不同的概念。 可以用一个通俗的例子来说明它们之间的关系。我们到银行去存取款时, 银行工作人员将根据我们的帐号去找我们的存款单, 找到之后在存单上写入存款、取款的金额。在这里,帐号就是存单的指针, 存款数是存单的内容。对于一个内存单元来说,单元的地址即为指针, 其中存放的数据才是该单元的内容。在C语言中, 允许用一个变量来存放指针,这种变量称为指针变量。因此, 一个指针变量的值就是某个内存单元的地址或称为某内存单元的指针。图中,设有字符变量C,其内容为“K”(ASCII码为十进制数 75),C占用了011A号单元(地址用十六进数表示)。设有指针变量P,内容为011A, 这种情况我们称为P指向变量C,或说P是指向变量C的指针。 严格地说,一个指针是一个地址, 是一个常量。而一个指针变量却可以被赋予不同的指针值,是变。 但在常把指针变量简称为指针。为了避免混淆,我们中约定:“指针”是指地址, 是常量,“指针变量”是指取值为地址的变量。 定义指针的目的是为了通过指针去访问内存单元。
既然指针变量的值是一个地址, 那么这个地址不仅可以是变量的地址, 也可以是其它数据结构的地址。在一个指针变量中存放一
个数组或一个函数的首地址有何意义呢? 因为数组或函数都是连续存放的。通过访问指针变量取得了数组或函数的首地址, 也就找到了该数组或函数。这样一来, 凡是出现数组,函数的地方都可以用一个指针变量来表示, 只要该指针变量中赋予数组或函数的首地址即可。这样做, 将会使程序的概念十分清楚,程序本身也精练,高效。在C语言中, 一种数据类型或数据结构往往都占有一组连续的内存单元。 用“地址”这个概念并不能很好地描述一种数据类型或数据结构, 而“指针”虽然实际上也是一个地址,但它却是一个数据结构的首地址, 它是“指向”一个数据结构的,因而概念更为清楚,表示更为明确。 这也是引入“指针”概念的一个重要原因。
3. C语言概念问题!!
对二维数组而言,某行首地址可a[n],a+n,&a[n][0]表示,你所说的某行的首地址和该行0列地址
是一个地址,只是表示方式有所不同,有的是行指针,有的则是列指针,区分的办法就是你在那个地址后加1看看表示的是什么,如果表示的是下一行的地址,则是行地址,如a+1.如果表示的是这一行下一列的地址,刚是列地址,如a[0]+1
你所问的 a+1与*(a+1)都是一个地址,但前者是行地址,后者是列地址,区别的方法就是我上面说的
4. c语言基本概念!急求!
1:C程序由函数组成,每个C程序必须有main()函数,它是程序执行的入口,程序从主函数第一行开始顺序执行。
2:结构化程序设计的基本思想是采用"自顶向下,逐步求精"的程序设计方法和"单入口单出口"的控制结构。自顶向下、逐步求精的程序设计方法从问题本身开始,经过逐步细化,将解决问题的步骤分解为由基本程序结构模块组成的结构化程序框图;"单入口单出口"的思想认为一个复杂的程序,如果它仅是由顺序、选择和循环三种基本程序结构通过组合、嵌套构成,那么这个新构造的程序一定是一个单入口单出口的程序。据此就很容易编写出结构良好、易于调试的程序来。
3:合法标识符的定义:由字母数字和_组成。数字不能当头。不能把标志符定义得和C的保留字一样。区分大小写。
4:一、逻辑运算符:
包括:1。&&逻辑与 2。||逻辑或 3。!逻辑非
逻辑运算符用于对包含关系运算符的表达式进行合并或取非
对于使用逻辑运算符的表达式,返回0表示“假”,返回1表示“真”。关于逻辑运算符的解释
请注意:任何使用两个字符做符号的运算符,两字符之间不应有空格,即将==写成= =是错误的。
假设一个程序在同时满足条件a<10和b==7时,必须执行某些操作。应使用关系运算符和逻辑运算符“与”来写这个
条件的代码。用&&表示“与”运算符,该条件代码如下:
(a<10) && (b==7);
类似地,“或”是用于检查两个条件中是否有一个为真的运算符。它由两个连续的管道符号(||)表示。如果上例
改为:如果任一语句为真,则程序需执行某些操作,则条件代码如下:
(a<10) || (b==7);
第三个逻辑运算符“非”用一个感叹号(!)表示。这个运算符对表达式的真值取反。例如,如果变量s小于10,程序
程序需执行某些操作,则条件代码如下:
(s<10)
或
(!(s>=10)) //s不大于等于10
关系运算符和逻辑运算符的优先级一般都低于算术运算符。例如,5>4+3的计算与5>(4+3)运算符是一样的,即
先计算4+3,再执行关系运算。此表达示的结果为“假”,即,将返回0。
下面的语句
printf("%d",5>4+3);
将输出 0
可以总结为:&&的结果是真真为真。||的结果是假假为假。
二:关系运算符
关系运算符是对两个表达式进行比较,返回一个真/假值。
符号 功能
> 大于
< 小于
>= 大于等于
<= 小于等于
== 等于
!= 不等于
这些运算符大家都能明白,主要问题就是等于==和赋值=的区别了。
一些刚开始学习C语言的人总是对这两个运算符弄不明白,经常在一些简单问题上出错,自己检查时还找不出来。看下面的代码:
if(Amount=123) ……
很多新人都理解为如果Amount等于123,就怎么样。其实这行代码的意思是先赋值Amount=123,然后判断这个表达式是不是真值,因为结果为 123,是真值,那么就做后面的。如果想让当Amount等于123才运行时,应该if(Amount==123) ……
5:1:while循环
while循环和for循环类似,其格式为:
while (条件语句)
{
语句1 ;
语句2 ;
....
语句n ;
}
执行while时,先测试“条件语句”,如果条件成立,则执行语句1到语句n,直至条件不成立时调处循环。
int i=0 ;
while (i<10)
{
i++ ;
System.out.println("Hey!.get me out of here!:);
}
2:do ... while 循环
do ... while 循环语句的格式为:
do
{
语句1 ;
语句2 ;
....
语句n ;
}
while (条件语句) ;
do ...while 语句的功能是首先执行语句1到语句n,然后进行条件测试,如果条件成立,则继续执行语句1到语句n,否这跳出循环。如:
boolean test=false;
do
{
......
}
while(test);
这种控制并不是很常用,但有时却非常重要,使用时注意结尾处while语句后的分号。
6:break只能跳出一层循环,要跳出多层,则需要在外面一层中再加入break;。
7:如果一个函数要使用参数,它就必须定义接受参数值的变量。
@@@ 形式参数与实际参数
函数定义时填入的参数我们称之为形式参数,简称形参,它们同函数内部的局部变量作用相同。形参的定义是在函数名之后和函数开始的花括号之前。
调用时填入的参数,我们称之为实际参数,简称实参。
必须确认所定义的形参与调用函数的实际参数类型一致,同时还要保证在调用时形参与实参的个数出现的次序也要一一对应。如果不一致,将产生意料不到的结果。与许多其它高级语言不同,(是健壮的,它总要做一些甚至你不希望的事情,几乎没有运行时错误检查,完
全没有范围检测。作为程序员,必须小心行事以保证不发生错误,安全运行。来源:www.examda.com
@@@@赋值调用与引用调用
一般说来,有两种方法可以把参数传递给函数。第一种叫做“赋值调用”(call by value),这种方法是把参数的值复制到函数的形式参数中。这样,函数中的形式参数的任何变化不会影响到调用时所使用的变量。
把参数传递给函数的第二种方法是“引用调用”(call by reference)。这种方法是把参数的地址复制给形式参数,在函数中,这个地址用来访问调用中所使用的实际参数。这意味着,形式参数的变化会影响调用时所使用的那个变量
8:基本数据类型是指不能再被分割为其他类型的数据类型,例如一个整数、一个字符等。C语言中的基本数据类型有整型、字符型、浮点型、空类型4种。
(1)整型
整型是取值为整数的数据类型。在C语言中根据取值范围和符号,整型数据又可以分成以下几种子类型:
int:带符号的基本整型,也可写为signed int,使用两个字节空间存储,取值范围为-32768~+32767之间。
unsigned int:不带符号的基本整型,使用两个字节空间存储,取值范围为0~65535之间。
long:带符号的长整型,也可写为long int,使用四个字节空间存储,取值范围为-2147483648~+2147483647之间。
unsigned long:不带符号的长整型,也可写为unsigned long int,使用四个字节空间存储,取值范围为0~4294967295之间。
short int:同int。
unsigned short int:同unsigned int。
(2)字符型
字符型的取值为一个ASCII字符,使用一个字节空间存储。数据类型名为char。
(3)浮点型
浮点型的取值为一般实数。根据精度范围浮点型数据又可以分为以下几种子类型:
float:单精度实型,使用四个字节空间存储,取值范围为10-38~10+38,,数据的有效位数为7位数字。
double:双精度实型,使用八个字节空间存储,取值范围为10-308~10+308,数据的有效位数为15位数字。
long double:长双精度实型,使用16个字节空间存储,取值范围为10-4932~10+4932,数据的有效位数为18位数字。
(4)空类型
空类型是一种特殊的数据类型,使用void表示,其数据值没有确定的数据类型。在C程序中,对于返回值为void的函数,应根据应用需要转换为一种确定的数据类型。
5. C语言概念
第三个是不对的。
第三个混用了数据类型,把一个整数型指针赋值给了一个整形变量,起不到任何交换作用。
回答你的问题:
变量的数值以二进制的形式存放于变量的地址所指向的内存单元中。
数值的改变不影响地址,该变量还用原来的内存单元。
第三个问题说法有错误,因为通过函数实现的交换,只能交换函数的局部变量,对主调函数的局部变量没有影响,所以,要传递主调函数中局部变量的地址进去,把交换后的数值写到地址上去。
第四个问题不知道你指的是不是非指针型变量。 如果是的话,变量的地址是程序分配的,是常量,不能交换。
6. C语言概念大全
因为我是学习计算机软件专业的,所以我要告诉你的一个重要经验就是:如果真的要想熟练掌握计算机编程技能(其实任何编程语言都一样),那么就必须要:一定、且多亲自上机实践才行!!绝对不能够只是在书本上读 C 语言程序、研究 C 语言程序的基本概念、语法结构、关键字等,那样绝对是无法掌握编程技能的!!!因为这些 C 语言的概念不是凭空就能够掌握的,这些概念的熟练掌握和理解是通过编写了足够多的程序之后,才能够从中领悟到的(尤其是 C 语言的指针功能是极其强大的,如果光靠看书,那是绝对无法掌握的,必须要靠编写足够多的 C 语言程序之后,才能够对 C 语言的指针功能有一个较深的理解)。
要想熟练掌握计算机编程技能,那么首先要有一台属于自己的电脑、并安装好操作系统,且安装好相应的程序编译开发环境,然后购买一本难度适合自己的编程教材,亲自动手上机编写、编译、链接、直到调试通过教材中的所有源程序(包括每一章的例题、以及每一章后面的练习题)。
只要你真正能够做到一直坚持下去,我保证你肯定可以熟练掌握好计算机程序设计语言。
7. C语言链表概念
简单说来,就是通过指针指向,把两个结构体连接起来。比如定义下面这个结构体
struct node
{
int data;
struct node *next;
}
可以看到结构体里面定义了一个自身类型的指针,通过让指针指向另外一个结构体,我们就能通过结构体里面的next变量访问下个结构体里面的内容,而通过下一个结构体,同样可以通过下一个结构体的next指向,找到下一个这种类型的结构体,这样就形成了所谓的链表。
8. C语言中完整表达式的概念
C 语言中的完整表达式的概念中,除了有需要表达的操作符(例如:!=、==,等等)、以及操作数之外,该表达式还必须要符合 C 语言的语法结构(例如:括号的配对等),否则的话,即使操作符、操作数都具备,那么该表达式也不能够称作是一个完整的逻辑表达式。举例如下:
#include <stdio.h>
void main( )
{
int num ;
scanf("%d", &num ) ;
if( ( num < 0 ) || ( num > 100 ) ) /* 该表达式即为一个逻辑表达式 */
{
printf("num is Error !\n") ;
exit(1) ;
}
else
printf("num is correct !\n") ;
}
其中:if( ( num < 0 ) || ( num > 100 ) ) 就是一个正确、完整的逻辑表达式。该表达式用于判断 num 的数值若小于 0,或者(用 || 表示) num 的数值大于 100,则认为 num 是错误的。
但是若想表达同样的意思,if( ( num < 0 ) || ( num > 100 ) ,该表达式的其他地方都没有改变,仅仅是右边缺少了一个英文右括号,那么该表达式不符合 C 语言的语法结构,这样的程序,C 编译器也无法正确编译运行,所以说该表达式就不是一个完整的表达式。