您的位置:首页 > 编程语言 > C语言/C++

C语言学习笔记 (2)

2007-07-27 13:53 579 查看
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向后移动i个int单位,win32下的sizeof(int)为4,即向后移动4个字节

}

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

函数:
C语言中常用内置函数:
math.h中:double sqrt(double x) 求平方根
double pow(double x,.double y) 求x的y次幂
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;//产生a到z之间的ascii码
a[1]=rand()%26+65;//产生A到Z之间的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为循环计数
{
….;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: