对于C语言中的数组的学习

一维数组:

格式:类型说明符   数组名  【常量表达式】 ;   例如: int  a  【10】;它表示定义了一个整形数组,数组名为a,有10个元素。

★:不允许对数组的大小作动态定义,即数组的大小不依赖于程序运行过程中变量的值。

错误示例: 1、float a[0];        数组大小为0没有意义 

                     2、int b(2)(3);   不能使用圆括号 

                     3、int k, a[k];    不能用变量说明数组大小 

★:未初始化的全局变量是0;

       未初始化的局部变量是垃圾值,若对其中部分初始化,则其余全部为0。

取地址问题(%p):

    &array【0】   //数组首元素地址,单位是4个字节。

    array                //数组名,同时也是首元素地址,单位是4个字节。

    &array             //数组地址,单位是一个数组,单位20个字节。

#include<stdio.h>

int b[5]; //未初始化的全局变量为0

int main()
{   
   // int array[5]; 未初始化的局部变量是垃圾值。
   //int array[]={1, 2, 3, 4, 5};
   int array[5]={1, 2, 3, 4, 5};
   //int array[5] = {1, 2}; //若对局部变量的部分初始化,其余剩下的为0.
   int i,j;

   int a[4][3]={1, 2, 3, 4, 9, 8, 4, 7, 3, 1, 2, 0};

   for (i = 0; i < sizeof(array) / sizeof(array[0]); i++)
   {
       printf("%d ",array[i]);
   }
   printf("\n");

   for (i = 0; i < 5; i++)
   {
       printf("%d ",b[i]);
   }
   printf("\n");


   printf("%p\n", &array[0]);
   printf("%p\n", array);
   printf("%p\n", &array);
   printf("********\n");
   printf("%p\n", &array[0]+1);
   printf("%p\n", array+1);
   printf("%p\n", &array+1);

   printf("********\n");
   for (i = 0; i < 4; i++)
   {
       for (j =0; j < 3; j++)
       {
           printf("%d ",a[i][j]);
       }
       printf("\n");
   }
   return 0;
}

二维数组:

格式:类型说明符  数组名  [常量表达式][常量表达式];  例如:float  a[3][4]; 它表示3行4列的float类型的数组。

取地址问题:

&a【0】【0】 //数组首元素地址,单位4字节

a【0】 //首行首元素地址,单位4字节

&a【0】 //首行的地址,单位12字节

a  //首行的地址,单位12字节

&a  //数组的地址,单位48字节

★:a【x】  ======   *(a+x)

例如:数组a【3】【4】,表示为a【1】【1】的。

1、*(a【1】+1):a【1】+1取地址,a【1】【1】,再加个*号就是取值的意思。

2、*(&a【1】【1】):&a【1】【1】取地址,*取值。

3、(*(a+1)【1】):*(a+1)== a【1】,所以取值a【1】【1】。

字符数组:

赋值问题:对于字符来说,以‘’赋值,例如:char a【10】={'a', 'b'}; 

                    对于字符串来说,以“”赋值,例如:char a【10】="helloworld";(字符串后占一位‘\0’,当作结束标志)

字符串处理函数:

1、strcat:连接函数

strcat (字符数组1 , 字符数组2)

char str1[30]={″People′s  Republic  of  ″};
char str2[]={″China″};
printf(″%s″,strcat(str1,str2));  
输出:
People′s Republic of China

2、strcpy:拷贝函数

strcpy (字符数组1, 字符数组2)

strncpy(字符数组1, 字符数组2,n):复制字符数组2中的前n位到字符数组1中

char str1[10],str2[]={″China″};
strcpy(str1,”china”); 

★:复制时连同字符串后面的′\0′一起复制到字符数组1中

3、strcmp:字符串比较函数

strcmp(字符串1,字符串2):如果字符串1=字符串2,函数值为0; 如果字符串1>字符串2,函数值为一正整数; 如果字符串1<字符串2,函数值为一负整数。

strncmp(字符串1,字符串2, n):比较前n位字符。

猜你喜欢

转载自blog.csdn.net/wow66lfy/article/details/81173842