Linux C程序设计基础数组与指针

数组的基本概念

数组:具有相同类型的若干变量的有序集合,是一种复合类型。

        对于同一个数组,其所有元素的数据类型都是相同的。

        数组名的书写规则应符合标识符的书写规定。

        数组名不能与其他变量名相同。

        方框号中常量式表示元素的个数,其下标从0开始计算。

        允许在同一个类型说明中,说明多个数组和变量。


一维数组

    类型说明符  数组名【常量表达式】={值,值....值};

            int a[5]={1,2,3,4,5}

void main (void){
   int i,a[10];
   for(i=0;i<10;1++)
     a[i]=2 * i + 1;
   for(i=0;1<=9;i++)
     printf("%d",a[i]);
}

二维数组

    数据类型  数组名【数组长度】【数组长度】

            int a[5][3]={{85,25,45},{13,64,97},{76,94,85},{49,68,75},{74,85,96}};

            int a[][3]={85,75,92,61,65,71,59,63,90,85,87,64,46,88,97};

void main(void){
   int i,j,s = 0,v[3];
   int a[5][3]=(85,85,85,74,74,74,96,96,96,41,41,41,52,52,52);
    for(i=0;i<3;i++){
     for(j=0;j<5;j++){
       s=s + a[j][i];
     }
      v[i]=s/5;
      s=0;
     }
      printf("数学:%d\nC语言:%d\n物联网:%d\n",v[0],v[1],v[2]);
}


字符数组

    用来存放字符量的数组成为字符数组

        char c[10]={'c','p','r','o','g','r','a','m'};

        char c[]={'c','p','r','o','g','r','a','m'};

        char c[]={cporgram};

void main(void){
   int i,j;
   char a[][5] = {{'B','A','S','I','C',},{'d','B','A','S','E'}};
   char c[] = "C porgram";
   for(i=0;i<2;i++){
     for(j=0;j<5;j++)
       printf("%c",a[i][j]);
     printf("\n");
  }

for(i=0;i<9;i++){
   printf("%c\t",c[i]);
 }
  printf("\n%s",c);
}


指针

    一个指针是一个地址,是一个常量。而一个指针却可以被赋予不同的指针值,是变量。但常把指针变量简称为指针。为了避免混淆,我们约定:“指针”是指地址,是常量。“指针常量”是指取值为地址的变量。定义指针的目的是为了通过指针去访问内存单元。

    对内存变量的定义包括三个内容:

        ①指针类型说明,即定义变量为一个指针变量;

        ②指针变量名;

        ③变量值(指针)所指的变量的数据类型。

类型说明符*指针名=&变量名;

    其中类型说明符表示本指针变量所指向的变量的数据类型,*表示这是一个指针变量,&表示去表两名对应的内存地址。


指针变量作为函数参数

    函数的参数不仅可以是整形、实型、字符型等数据,还可以是指针类型。它的作用是将一个变量的地址传送到另一个函数中。
swap(int *p1,int *p2){
  int temp=*p1;
  *p1=*p2;
  *p2=temp;
 }

void main(void){
  int a,b;
  scanf("%d,%d",&a,&b);
  swap(&a,&b);
  printf("%d,%d\n",a,b);
}


指针与数组

        一个变量有一个地址,一个数组包含若干元素,每个数组元素都在内存中占用存储单元,它们都有相应的地址。所谓数组的指针是指数组的起始地址,数组元素的指针是数组元素的地址。

        一个数组是由连续的一块内存单元组成的。数组名就是这块连续单元的首地址。一个数组元素的首地址也是指它所占有的几个内存单元的首地址。

        指针变量可以实现本身的值的改变。如p++是合法的,表示下一个数组元素的地址;而a++是错误的。因为a是数组名,它是数组的首地址,是常量。


指向指针的指针

        指针可以指向基本类型,也可以指向符合类型,因此也可以指向另一个指针变量,称为指向指针的指针。

void main(){
   int i=10;
   int *p=&i;
   printf ("%d\n",*p);//10
   int **pp=&p;
   printf("%d\n",**p);//10
}

    

猜你喜欢

转载自blog.csdn.net/cool__king/article/details/79747297