在上一个blog学习了&运算符,使用&取了变量.数组等地址,有什么用那?如果能够将取得的变量的地址传递给函数,能否通过这个地址在函数内访问到外部这个变量?答案是肯定的,scanf("%d",&i)就是一个C语言的函数,另外我们试了,将地址交给一个整数,这个事情不靠谱,因为整数和地址不见得总是类型一致,那么什么样的类型可以接收取地址得到的地址那?指针! 指针的定义 指针类型的变量就是保存地址的变量,就是保存&运算符取得的其他变量的地址的一个变量:有int…
C语言中字符串的定义 如果定义一个字符数组word,并使用大括号对其初始化,如下图所示: 但是这个不是C语言的字符串,只是字符数组,不是字符串,因为不能使用字符串的方式进行计算.那么C语言的字符串长什么样呢?如下图所示: 那么上述两个定义有何区别呢?区别就是C语言字符数组初始化时的最后一个字符加入了一个特殊的东西,就是'\0',这个符号的意思就是整数0,这里去掉单引号和斜杠,只放0也是可以的.这个字符数组总共有7个元素,最后的这个0使得这个数组就是C语言的字符串,那么这个字符串就可以使用c语言字…
指针值加1就是将指针值加上sizeof(指针所指变量的类型) 1+1=2,那么指针加1是加上了1这个数字吗?试一下,在代码中定义了char数组,char也是整数,数组名是ac,ac中有10个元素,0-9,然后做了一个char *p=ac,定义了*p的一个指针,p指向了ac数组的第一个单元.然后分别输出p和p+1的值,结果是差了1: #include <stdio.h> int main(void){ ,,,,,,,,,}; char *p = ac; printf("p =%p\n&…
如果我们通过函数的参数将一个数组传递到参数中去,那么在函数里接收到的是什么东西呢?我们知道如果传递一个普通变量,那么参数接收到的是值,如果传递一个指针变量,参数接收到的也是值,只不过这时的值是地址.那么数组是什么?将数组作为值传给一个函数,在函数的参数里有一个数组变量来接收这个数组,看下到底接收到数组变量的什么东西呢?以minmax作为例子来测试下: 在minmax函数中能不能计算出数组a的个数?在minmax和main中分别添加printf函数,从结果可以看出,在main里a的大小是68,而在…
指针应用场景一:交换两个变量的值 在学习函数时,交换两个数的值,做一个swap函数,传递值进去,也可以将两个值交换过来,没问题,可是离开swap就没有用了,为什么?因为传进去的是两个值. #include <stdio.h> void swap(int a,int b); int main(void) { ; ; swap(i,j); printf("i=%d,j=%d\n",i,j); ; } void swap(int a,int b){ int p; p=a; a=b…
问题1:计算机遍布生活的各个方面,若你需要一个功能可以下载APP,我们需要的大部分功能都可以找到对应的APP,如果没有可以自己写一个软件,但是很少人需要这么做,那么我们为什么学习计算机编程语言? 学习语言重要的不是写软件而是1)通过学习语言去理解计算机是如何工作的?2)计算机擅长做什么?能够做什么?擅长做什么?不能够做什么? 问题2:计算机是如何解决问题的? 比如你在餐馆,想要一杯水.那么如果你跟一个服务员交流,只需要告诉服务员:"请给我一杯水",那么服务员知道怎么打一杯水给你,他会去…
结构数组: 和C语言中的int,double一样,一旦我们做出一个结构类型,就可以定义这个结构类型的变量,也可以定义这个结构类型的数组.比如下面这个例子: struct date dates[100]; struct date dates[] = {{4,5,2005},{2,4,2005}}; dates[100]是一个结构数组,其中每个元素是date结构的变量.对dates初始化的时候就需要两层括号,外层大括号是说初始化dates这个数组,里面的每个大括号都是一个数组元素,比如{4,5,20…
结构作为函数参数: 声明了一个结构就有了一种自定义的数据类型,这个数据类型和int.float.double一样,int等基本类型可以作为函数的参数,那么这种个自定义的结构类型也应该可以作为函数参数,比如: int numberofDays(struct date d):函数numberofDays的参数就是一种结构变量. 整个结构是可以作为参数的值传入函数的,这时是在函数内新建一个结构变量,并复制调用者的结构的值,这和数组是完全不一样的.结构除了可以作为参数,也可以作为返回值,例如下述程序中,…
定义结构: 在程序里,如果想要表达一个数据就需要一个变量,而每个变量又都需要一个类型,之前学过C语言中有int.double.float.char等这些基础类型,还有指针.数组等.如果你要表达的数据比较复杂,不是一个值,比如你要表达日期,有年月日三个值,要表达时间,有时分秒三个值,要表达一个人可能需要姓名.学号等一堆数据,但是又想要一个整体表达这么多数据,这时就需要C语言中一种特殊的东西,叫做结构! 一个结构就是一个复合的数据类型,里面有各种数据类型的成员,然后用一个变量来表达那么多的数据.比如…
字符串的赋值 字符串的输入与输出 对C语言的基础类型,比如int.double等类型,scanf.printf有专门的格式转换,而对字符串,scanf.printf使用%s格式字符进行输入与输出.当使用scanf进行读一个字符串的时候,读到什么东西,读到什么位置为止是很微妙的,试一下: #include <stdio.h> int main(void){ ]; scanf("%s",word); printf("%s##\n",word); ; } 程序…