华清远见25072班C语言学习day7
重点内容:
二维整形数组:
定义:
数据类型 数组名[行数][列数];
数组中元素的访问:
通过行标和列标来访问、行标从0开始,列标从0开始
初始化和赋值:
int arr1[2][3]={1,2,3,4,5,6}; -->二维数组完全初始化
int arr2[2][3]={{2,9,4},{12,8,5}};-->二维数组以行为单位的完全初始化
int arr3[3][3]={1,2};-->二维数组的不完全初始化,未初始化的部分为0
int arr4[3][3]={{1},{3},{1,9}};-->以行为单位的不完全初始化,未初始化部分默认为0
int arr5[][4]={1,2,3,4,9}; -->二维数组省略行数的初始化//分配8个int的空间,因为一行最多有4个数据,初始化列表有5个,需要再分配一行
二维数组不能省略列数初始化!!!
二维字符数组(存储多个字符串,需要用二维字符数组):
定义:
char strs[行数][列数];
二维字符数组的列数,需要以最长的字符串来分配,会造成空间的浪费
指针:
其他类型不能存储内存地址,而指针可以存储内存地址
定义:
数据类型 *指针名;
指针的初始化和赋值:
int *p; -->定义了一个int*类型的指针p但是没有初始化是一个野指针
int *p1 = &a; //定义了一个int *类型的指针,用a的地址给指针初始化
int *p2 = NULL; //将指针初始化为空指针
p = &a; //p1和p都指向变量a(都保存变量a的地址)
指针和变量的关系:
指针保存变量的首地址,就称为指针指向该变量
变量有变量的地址,指针也有自己的地址
指针指向变量只能指向变量的首地址
作业:
1.一维数组中元素的去重
程序源码:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
int arr[10];
printf("please enter arr:");
int len=sizeof(arr)/sizeof(arr[0]);
for(int i=0;i<len;i++)
{
scanf("%d",&arr[i]);
}
for(int i=0;i<len;i++)
{
for(int j=i+1;j<len;j++)
{
if(arr[i]==arr[j])
{
for(int k=j;k<len;k++)
{
arr[k]=arr[k+1];
}
len--;
j--;
}
}
}
for(int i=0;i<len;i++)
{
printf("%d\t",arr[i]);
}
putchar(10);
return 0;
}
2.整理思维导图