C基础中的知识点
来源:互联网 发布:增加人脉的软件 编辑:程序博客网 时间:2024/04/30 01:25
二进制与八进制,十六进制的转换
二进制的3位相当于8进制的1位
二进制的4位相当于16进制的1位
getchar() 从键盘获取一个字符,有返回值,返回获取的那个字符,没获取字符将一直等待
getchar()函数可用作吸收残留的回车键,放在scanf后面
字符加单引号表示ASCII码值
字符常量是用单引号包围的单个字符 1.普通字符常量 2.转义字符常量
switch(表达式)
{
case 常量:
}
数组的内存空间大小是从定义的时候就分配好的,数组元素存在于连续的内存中,所以在定义数组的时候,数组元素的个数必须是个确定的值,即可以是普通常量或符号常量,不能是个变量。
注:不能整体访问一个数组,只能访问数组的元素。
1.数组名,表示该数组的首元素的首地址
2.一个指向数组元素的指针,+1表示它指向下一个元素的位置.
eg:#include<stdio.h>
void main()
{
int a[5]={1,2,3,4,5}; //a相当于int 型的常量指针,不是变量指针,指针指向数组首元素的地址
printf("%p,%p\n",a,&a[0]);
int*p=&a[0];
printf("%p,%p\n",p+1,&a[1]);
printf ("%p\n",a+1);
}
1.数组名:a,表示该数组首元素的首地址,作为一个指针,它指向的对象是这个数组里面的的元素,a+1表示它的位置偏移一个它所指对象的长度.
2.&a,表示对整个数组这段连续内存取地址,当它作为一个指针的时候,它所指的对象是整个数组这块连续内存,&a+1表示它的位置偏移一个它所指的对象长度,到达了数组尾.
3.p+n=p+n*sizeof(p所指的对象类型)
eg:
#include<stdio.h>
void main()
{
inta[5]={1,2,3,4,5};
printf("%p,%p\n",a,&a); //取一个数组名的地址所产生的是指向数组的指针,&a的类型则相当于int **,是所谓指向数组
的指针,*操作符
具有从右向左的结合性,即int **a相当于int *(*a)
printf("%p,%p\n",a+1,&a+1);
}
结果为:0xbfff024c,0xbfff024c
0xbfff0250,0xbfff0260
int*a[5] ;一个指针数组a,数组里的每个元素都是一个指向int型数据的指针
int(*p)[5];一个指针,指向数组5个int型元素的数组 // P+1表示移动5个int型字节
二维数组可以把它看成是一个一维数组,一维数组里面每一元素都是单个数据,二维数组里面每个元素都是一个数组,所以,二维数组可以看成是以数组为元素的一维数组,即数组的数组,在存储的时候是以数组,按行的方式存储的。eg:
int a[2][3]={{1,2,3},{4,5,6}}; 2行3列,第一个元素为第一行,第二个元素为第二行。
可以理解为:a[0]={1,2,3}
a[1]={4,5,6}
#include<stdio.h>
void main()
{
int a[4][5]={1,2,3,4,5,
6,7,8,9,10,
11,12,13,14,15,
16,17,18};//可以把该二维数组看成是含4个元素的一维数组
/*printf("%p\n",a);//a,该数组的首元素的首地址,在该处首元素也就是第一行,在数字1的位置作为指针,指向的对象是行
printf("%p\n",a+1);//a+1即跨过一个该指针指向的对象的长度,到了数字6的位置
int (*p)[5]=a;
printf("%p,%p\n",p,p+1);
printf("%p\n",*a); //第一行地1列的地址
printf("%p\n",*a+1); //第1行第2列的地址
printf("%p\n",*(a+1)); //第二行地一列的地址
printf("%p\n",*(a+1)+1); //第二行第二列的地址
printf("%p\n",&*(a+1)); //指向第二行的指针
printf("%p\n",&*(a+1)+1);//指向地3行的指针
printf("%d\n",*(*(a+1)+1)); //a[1][1]
} 注:二维数组名,表示指向首行的地址,对象是行,在指向行的指针前面加一个*,就转换为指向列的指针; 在指向列的指针的前面加一个&,就成为指向行的指针(指针要在每一行的首位才行)。
字符串一般存放在数组中时,输入用getchar();输出直接用%s 加数组名即可。
strlen();计算字符串中字符的个数,并将字符的个数作为这个函数的返回值。在计算字符串中字符个数的
时候不计算表示字符串结束的'\0'字符。
结构体
1.struct 2.student 3student1 (1.表示结构体标志 2.表示结构体名 3.表示结构体变量)
可以用一个结构体变量给另一个结构体变量整体赋值,不可以对结构体整体操作,只可以操作里面的成员变量
eg:
struct student student1={1,"xxx",'m',90};
struct student student2;
student2=student1;
2. 结构体指针变量:一个专门用来指向结构体变量的指针
指向一个结构体变量的指针的值是这个结构体变量的首地址
结构指针变量定义的一般形式:
struct 结构体名 *p
通过结构体指针变量可以访问结构体成员
一般形式为:结构体指针变量->成员名
3.结构体数组
struct student stu[2];结构体数组的引用结构体数组名[下标号].成员名eg:stu[0].num=102;
用指针变量的方式给结构体复制#include<stdio.h>
struct student
{
int num;
char name[20];
char sex;
float score;
};
void main()
{
struct student stu[2];
struct student *p=stu; //表示p指向结构体数组的首地址
for(p=stu;p<stu+2;p++)
{
printf("pleaseinput data:");
scanf("%d %s %c %f",&p->num,p->name,&p->sex,&p->score);
getchar();//输入格式符之间留有空格,可以避开%s和%c的弊端.
}
for(p=stu;p<stu+2;p++)
{
printf("outputstu[%d]:",i);
printf("%d %c %f %s\n",p->num,p->sex,p->score,p->name);
}
}
- C基础中的知识点
- Java中的基础知识点
- C基础知识点小记
- C 指针 基础知识点
- C基础知识点
- Objective-C基础知识点
- Objective-C基础知识点
- Objective-C基础知识点
- Objective-C基础知识点
- Objective-C基础知识点
- Objective-C基础知识点
- c/c++基础知识点
- C语言程序设计 基础知识点
- c/c++基础知识点
- C语言中的知识点
- OC中的几个基础知识点
- Java中的一些基础知识点
- 计算机基础中的知识点回顾
- 关于php在linux上的环境配置
- javascript设计模式 观察者模式
- sqlite 中的or 和 and
- SpringMVC-国际化
- Linux内核中的调度算法
- C基础中的知识点
- 创建一台拉倒服务器
- 204. Count Primes
- "快速排序"算法-之通俗易懂全面解析
- LeetCode-18.4Sum
- 判断二叉树是不是平衡树
- 关于iOS开发中颜色取色问题
- SpringMVC中文乱码 controller乱码
- 【整理】getopt和getopt_long函数