C语言学习笔记 (2)

C语言学习笔记 2

 

指针:也是一个变量,用于存放另一个对象的地址。

 

定义指针:datatype *pointername;

 

datatype限制pointername所存储地址的对象必须也是datatype

 

  int a=10;

 

  int *ptr_int;

 

  ptr_int=&a;//a的地址传给指针ptr_int

 

  *ptr_int=20;//a=20*为间接运算符,改变的是地址所对应的对象的值

 

 

 

直接将一个指针地址给另一个同级指针是不可以的

 

 

   int *ptr_int;

 

   int **ptr_ptr_int;

 

   ptr_ptr_int=&ptr_int;//这样是可以的,ptr_ptr_int里存放的是指针ptr_int的地址

 

 

 

 

数组名即为数组的首地址,即

 

   int array[10]; //array=&array[0]

 

   int *ptr_array;

 

   ptr_array=array;//ptr_array=&array[0]等效

 

 

 

指针移动 按照其所指向的数据类型的字节为一个单位,即

 

 

   int array[10]={0,1,2,3,4,5,6,7,8,9};

 

   int *ptr_array=array;

 

   int i;

 

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

 

   {

 

      Printf(“%d/t”,ptr_array+i); //ptr_array向后移动iint单位,win32下的sizeof(int)4,即向后移动4个字节

 

}

 

若两个指针相等,则表示两个指针指向的同一个对象

 

 

函数:

C语言中常用内置函数:

math.h中:double sqrt(double x) 求平方根

double pow(double x,.double y)   xy次幂

double ceil(double x)    不小于x的最小整数

double floor(double x)   不大于x的最大整数

ctype.h中:int toupper(int x)  转换为大写字母

int tolower(int x)   转换为小写字母

stdlib.h中:int rand(void)  产生随机数

void exit(int retval) 终止程序 retval 0是非正常,为1是正常

 

rand()需要下种子如:

#include <stdio.h>

#include <stdlib.h>

#include <time.h>

 

void main()

{

       int a[2],i;

       srand((unsigned)time(NULL));//以时间time为种子,必须include time.h

       a[0]=rand()%26+97;//产生az之间的ascii

       a[1]=rand()%26+65;//产生AZ之间的ascii

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

              printf("%c/n",a[rand()%2]);//随机大小写

}

 

自定义函数

return_type   function_nam([datatype arg1,datatype arg2,…])

返回值类型     函数名      参数列表

 

递归调用:

必须有函数终止条件,

例:递归调用输出字符串

#include <stdio.h>

 

char *display(char *p)   //返回指针的函数

{

       if(*p == '/0')                        //判断参数是否为/0,是则结束函数

              printf("/n字符已经输出完毕!/n");

       else{

              printf("%c",*p);  //打印字符

              display(p+1);  //指针推后

       }

}

 

void main()

{

       char num[] = "abcdefghi";

       display(num);

}

 

 

变量的定义域:

全局变量,整个程序都可以调用和改变,

局部变量,只在函数体内部生效

 

存储类型:auto 自动变量,一般不显示声明变量 均为auto

register 寄存器变量,提高效率,可以直接从寄存器中读写

extern  外部变量   引入外部的全局变量,以便读写

 

static  静态变量  在函数体内部定义  生存期为整个程序  改变後的值在程序结束前一直保存

 

函数参数的传递:

 

传值调用:只是将实参的值赋值给形参  实参的值并不会因为形参的改变而改变

引用调用/传址调用: 将实参的地址传递给形参   则修改指针所指向的对象的值 就是修改实参的值,所以实参会改变

 

数组作为参数时 就是传址调用,传递的是数组的首地址即数组名

 

字符数组  字符串

字符数组与字符串的区别 字符串後有一个’/0’  而字符数组中没有  如果主动的在字符数组最后加入 此字符数组也可以当成字符串

 

puts()  gets()  输入输出字符串

 

字符串处理函数:

需要include string.h

 

 strlen() 返回字符串的长度 并不计算字符串最后的’/ 0’

strcpy(dest,src)src 赋值给 dest 会覆盖dest的值  ‘/ 0’ 会被一起复制

strcmp(str1,str2)比较字符串 从第一个字符开始 按照ascii码的大小比较 如果str1大于str2则返回1,如果str2大于str1则返回-1  如果相等就返回0

strcat(dest,src) src连接到dest后面

 

字符串指针实际就是数组指针

字符指针数组  将字符指针存在在一个数组中

 

结构:

结构成员的访问:结构变量名.结构成员名  中间以dot (。)来连接

结构指针 结构指针->结构成员  访问结构成员

结构数组:

操作时,结构指针的推后就是数组下标的改变要同时改变如

  For(i=0;i<10;i++,p++)//p为结构指针,i为循环计数

       {    

              ….;

       }

 

 

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值