Ubuntu,vmWare
Linux
一:数组的定义:方法一:
方法二:
方法三:
二:数组的使用方法一:
方法二:
三 : 可变数组 在编译程序的时候, 还不知道数组的元素个数,但是是确定数组类型和数组名,此时不能给可变数组赋初值; 直到程序运行到代码定义数组的语句之前,元素的个数才被确定下来 int length ; scanf('%d', &length); 在运行到可变数组定义前,必须得到数组的元素个数 int array[length] ;// order~
四: 字符数组 由char 类型的数据组成的数组 char arr[10] ; char arr[10] = “hello”; char arr[10] = {‘h’, ’e’, ’l’, ’l’, ’o’, ‘\0’ , 0, 0, 0, 0} ; char array[10] = {‘h’, ’e’, ’l’, ’l’, ’o’, ‘a’ , ‘b’, ‘c’, ‘d’, ‘e’} ; // 定义是没有问题的,这个array不适合当成字符串来做操作了,一般是逐个元素的访问 {1,2,3,4,5,6,7,8,9,10};‘\0’是“ ”自带的, 通常我们需要对字符数组进行整体操作的时候, 会用上’\0’我们通常习惯字符串后面的自带’\0’ char a[ ] = “hello” ; 这个字符数组一共占用了6个 ‘h’, ’e’, ’l’, ’l’, ’o’, ‘\0’ char a[ ] = {‘h’, ’e’, ’l’, ’l’, ’o’} ; 这个字符数组一共占用了5个练习: 使用键盘给字符数组赋值%s,且把每个字符数组的元素都用%c逐个打印出来,需要用空格隔开 char arr[100]; // random int i; scanf('%s' , arr) ;//scanf('%s', &arr[0])// for(i=0; i<100 ; i++) for(i=0; arr[i]!='\0' ;i++)// 类似%s 只要在内存中遇到了’\0’就停止打印 { printf('%c', arr[i]); // 只会显示有效字符 } scanf('%s' , arr); 等价于scanf('%s' , &arr[0]); 把键盘缓冲区中的字符依次放在数组arr的首元素开始的空间,直到遇到空格或者换行符停止, 同时增加一个'\0' 如果要输入带空格的字符串,可以用scanf(“%[^\n]” , arr);或者是 fgets(arr , 100 , stdin); scanf('%c' , &arr[0]); 只是放置一个字符到首元素地址 printf('%s' , arr);等价于printf('%s' , &arr[0]); 从地址&arr[0]开始逐个取字符并打印,遇到了‘\0’就停止打印 printf('%c' , arr[i])打印对应的一个字符 sizeof(arr) 表示整个数组的占用空间字节数strlen(arr) 函数,可以返回数组的有效字符数,也就是基于arr到‘\0’为止 练习:从键盘输入一个可变长度字符串, 统计这个字符串中小写字母的个数且把每个小写字母都打印出来参考 var_array.c 定义可变长度字符串char_array3.c******************字符数组 %c通过下标逐个操作元素, %s是访问数组名,基于首元素地址开始操作数组******************错误~:char_array3.c:13:9: warning: format ‘%s’ expects argument of type ‘char *’, but argument 2 has type ‘int *’ [-Wformat=]‘%s’这个格式需要的类型是char *(char类型数据的地址),但是第二个参数是int类型数据的地址
扩展:五:函数 function1)函数的定义:函数的作用域 函数的返回值 函数名( 形参类别及形参名列表 ){ 具体的功能实现} int func1( char a ){ ...........return -1;}func1的返回值是int 类型的,调用的时候需要给一个char类型的数 int func2( int x , int y ){ ...........return 2;}func2的返回值是int 类型的,调用的时候需要给2个int类型的数 int func3( void ){ ...........return 1;}func3的返回值是int 类型的,调用的时候不需要给参数 void func4( int a ){ ...........return ;}func4是没有返回值,调用的时候需要给1个int类型的数 2)函数的调用:在某个函数中调用函数, 调用的时候需要注意函数的格式(返回值、参数) func1( ‘a’ ) ; 如果在调用的时候觉得不需要使用函数的返回值, 可以不处理 i = func2( a , b ); 把a和b变量的值传递给函数,函数的返回值赋值给 iint ret = func3( ); 函数不需要形参,直接使用函数的返回值func4 ( 10 ); 直接给函数传递一个常量值10 练习: 定义一个函数, 可以返回3个参数中的最大值 编程验证效果有返回值, 有3个参数 max_func.c:15:8: warning: implicit declaration of function ‘max_func’ [-Wimplicit-function-declaration] 1: 因为函数没有事先声明 2: 定义和调用的函数名或者参数的个数不一致 3)函数的声明:因为编译器是从上往下进行编译的, 当编译到某个没有实现定义的函数时候会给一个警告, 需要在.c文件的开头增加函数的声明int max_func(int a, int b , int c); 声明和定义差不多,但是后面跟的是分号也可以忽略参数名,只保留参数的类型int max_func(int , int , int ); 4)字符串函数的使用 字符串相关的函数声明基本都放在#include
“经验是茶,需要您去品!”如果您认为我写得还不错,请在页面上点击“红心”支持我,点击“月票投票”投我一票,如果您有疑问,请在页面下方评论框中指出,谢谢。