昨天余留作业
1。插入一个数
int arr[6]={1,5,6,8,12};
int i=0;
int j=0;
int value=0;
printf("input value:");
scanf("%d",&value);
for(i=0;i<6;i++){
if(value<arr[i]){
break;
}
for(j=5;j>i;j--){
arr[j]=arr[j-1];
}
arr[i]=value;
for(j=0;j<6;j++){
printf("%d",arr[j]);
}
printf("\n");
}
2.素数
int i=2;
int j=0;
int arr[n];
int count=0;
for(i=2;i<100;i++){
for(j=2;j<i;j++){
if(i%j==0){
break;
}
if(i==j){
arr[count]=i;
count++;
printf("%d",i);
if(count%5==0){
printf("\n");
}
}
for(i=0;i<count;i++){
printf("%d",arr[i]);
printf("\n");
}
}
}
一.数组
1.二维数组
行数可以省略,列不可省略
//以下初始化方法均可 int arr[][3]={1,2,3,4,5,6,7,8,9}; //int arr[3][3]={1,2,3,4,5,6,7,8,9}; //int arr[][3]={1,2,3,4,5,6}; //int arr[][3]={0}; //遍历输出二维数组 int i=0; int j=0; for(i=0;i<3;i++){ for(j=0;j<3;j++){ arr[i][j]=3*i+1; } } for(i=0;i<3;i++){ for(j=0;j<3;j++){ printf("arr[%d][%d]=%d\n",i,j,arr[i][j]); } }
2.指针
(1)指针类型是一种特殊的类型
datetype name;
datetype name;
datetype * name;
指针和普通变量的区别
指针:存地址;
普通变量:存值;
指针只能保存与其相同的类型。
(2)
(3)地址的访问
:间接访问运算符
int a=10;
int pa;
pa =&a;
pa:取指针对应内存里面的值
(4)可以把指针的值赋给同类型的指针
(5)不同类型的指针的大小
(6)指针的类型和指针所指向的类型
int pa;
double pb;
指针的类型:去掉变量名之后的部分
指针所指向的类型:去掉指针变量名和其前面的
(7)指针与数组
数组名是一个地址。
数组元素的访问:
int arr[5]={1,2,3,4,5};
int p=arr;
arr[0];arr[3]
(arr); (arr+3)
(p); (p+3)
p[0]; pa[3]
(8)野指针
没有初始化,或者其指向的内存被释放,而指针没有被置空;
危害:
造成系统资源的浪费,容易造成未知的致命错误;
(9)指针地址的运算
自增:指针向高地指方位移动
自减:往底地址方位移动
移动的字节数是指针所指向类型的大小
指针相减,表示两指针之间的距离,相加没有意义。指针加减一个常量,表示地主往高字节或低字节方向移动,常量值sizeof(对应数据类型)个字节!
(10)概念区分
int buf[3];
数组大小为3,存放三个int型变量
int *pb;
指针,其类型为int *型
int arr[4];
指针数组
int (pa)[3];
数组指针,有称行指针
二级指针
datatype **pointorname;
int a=10;
int *q=&a;
int **p=&q
p=q;
p=q=a;
定义一个指针,或对地址进行操作时,一定要确定指针的指向