Day 9
函数下
1.求矩阵每行元素的和
int sum_(int *p,int m,int n,int i){
int sum=0;
for(int j=0;j<n;j++){
sum+=*(p+i*n+j);
}
return sum;
}
int main(){
int m,n;
cin>>m>>n;
int *p=new int[m*n];//动态分配
int *a=p;//保存首地址
for(int i=0;i<m;i++){
for(int j=0;j<n;j++){
cin>>*a;
a++;
}
}
for(int i=0;i<m;i++){
cout<<sum_(p,m,n,i)<<endl;
}
delete[]p;//必须释放分配时的首地址
return 0;
}
2.使用strcmp函数
头文件<cstring>
if(strcmp(a.c_str(),b.c_str())>0)swap(a,b);
3.行索引 row 和列索引 col
4.若数组为
//常量二维数组
//变量模拟二维数组(用一维模拟二维)
int sum_(int *p,int m,int n,int i){
int sum=0;
for(int j=0;j<n;j++){
sum+=*(p+i*n+j);
}
return sum;
}
5.用指针使char数组达到string的效果
const char* month[12]={"January","February","March","April","May","June","July","August","September","October","November","December"};
6.逆置函数 reverse(v.begin(),v.end());
7.二级指针
int main(){
int a(0);
int *p;
int **pp;
p=&a; pp=&p;
cout<<**pp;
return 0;
}
8.
int main(){
int m,n;
cin>>m>>n;
while(m--){
int *a[n];
for(int i=0;i<n;i++){
a[i]=new int;//分配堆内存,合法化指针
cin>>*a[i];}
int all=calculate(a,n);
double aver=all*1.0/n;
cout<<all<<" ";
cout<<fixed<<setprecision(1)<<aver<<endl;
for(int i=0;i<n;i++){
delete a[i];//释放堆内存
a[i]=nullptr;//避免野指针
}
}
return 0;
}
9.指向函数的指针
int max(int a,int b)
int (*pf)(int ,int);//(*pf)()表示无参数函数
pf=max;
10.//exit(0)是c语言中终止程序运行的核心函数。
11.
c语言中分配动态内存
int *a,n; scanf(“%d”,&n); a=(int * )malloc(sizeof(int) * n);// 建立长度为n的动态整型数组 free(a);//释放动态内存。
