数组
#include <stdio.h>
#include <stdlib.h>
const int MAX = 3; // 定义 常量最大值 是 3 常量 const
/*
用一个变量来表示班级的最大人数,或者表示缓冲区的大小
为了满足这一要求,可以使用const关键字对变量加以限定:
const type name = value;
const 也可以和指针使用 可以限制 指针变量本身
方法
const int *p1;
int const *p2;
p1和p2 数据是只读的 ,值可以修改
int * const p3; 只读 p3 指针的值不能被修改
*/
int main(int argc, char *argv[]) {
int Array[] ={10,20,30}; // Array 数组
int i;
for (i=0;i<MAX;i++)
{
printf(" Value of Array[%d]=%d\n",i,Array[i]); //输出数组的值
}
return 0;
}
数组取值
#include <stdio.h>
#include <stdlib.h>
//const int MAX = 3;
void addx(int a,int b,int *c)
{
*c=a+b;
}
int main(int argc, char *argv[]) {
// int c[5] = {1,2,6,7,5};
// int d[][3]={
// {0,2,3},
// {4,6,6},
// {7,8,9},
// };
// int *ptr;
// int f=10;
// ptr = &f;
// *ptr =20; 指针修改变量的值
// printf("%d",*ptr); //取数组的值 可以替换为 ptr[0]
//指针 ptr +1 = ptr +1 =ptr + sizeof(int) 类型长度
int nRet;
addx(1,2,&nRet); //调用函数
printf("%d",nRet);
//输出 结果 3
printf("%#xp\n",&nRet); //变量不能使用* nRte 取值
//输出结果 0x65fe1cp
return 0;
}
指针数组的简单使用
#include <stdio.h>
#include <stdlib.h>
const int MAX = 3;
int main(int argc, char *argv[]) {
int Array[]={10,20,30};
int i,*ptr[MAX]; // ptr 指针
for (i=0;i<MAX;i++){
ptr[i]=&Array[i];
//赋值为整数的地址
}
for (i=0;i<MAX;i++){
printf("Value of Array[%d]=%d / address is %#xp /The address of the array is %#xp\n",i,*ptr[i],&ptr[i],&Array[i]);
//输出值 指针数组的值 指针数组的地址 数组的地址
/* 输出结果
Value of Array[0]=10 / address is 0x65fda0p /The address of the array is 0x65fdccp
Value of Array[1]=20 / address is 0x65fda8p /The address of the array is 0x65fdd0p
Value of Array[2]=30 / address is 0x65fdb0p /The address of the array is 0x65fdd4p
*/
}
return 0;
}
二维数组
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
int a[3][3]={
{1,2,3},
{4,5,6},
{7,8,9},
};
int (*p)[3]; //int (*p)[3] 声明一个数组有三个元素
//p 二维数组 首地址
//*p 第一个数组的首地址
p=a;
printf("%d\n",*p[2]+1); //*p[2] 取的是7 如果想取 8 加 一*p[2]+1 前面就说过 二维数组就是行和列 可以这样去看 第三行加1
//printf("%d\n",p[7]); 不加[3]
return 0;
}
变参传递
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
int printStr(int a,...)
{
va_list v1;
int n=0;
va_start(v1,a);
for (int i=0;i<a;i++)
{
n+= va_arg(v1,int);
}
va_end(v1);
return n;
}
int main(int argc, char *argv[]) {
int a=printStr(3,10,20,30);
printf("%d\n",a);
return 0;
}
变参传递 https://blog.csdn.net/qq_16628781/article/details/72717008