Summer493506332的专栏

数组指针与指针数组的关系与区别数组与指针的概念:数组要么在静态存储区被创建(如全局数组),要么在栈上被创建。数组名对应着(而不是指向)一块内存,其地址与容量在生命期内保持不变,只有数组的内容可以改变。指针可以随时指向任意类型的内存块,它的特征是“可变”,所以我们常用指针来操作动态内存。指针远比数组灵活,但也更危险。数组指针:(*p)[4]指针数组:*p[4]int b[3][4]={2,4,6,8,10,1,3,5,7,9,0,11};int (*a)[4];//a=b;//数组指针可以这样赋值,因为a是一个指针,但若a是一个数组则不能这样赋值int i,j;//用数组指针打印打印数组//方法一for(i=0;i<3;i++)for(j=0;j<4;j++)//printf("%3d",a[i][j]);//printf("%3d",*(*(a+i)+j));//输出a[i][j]//方法二for(i=0;i<12;i++)printf("%3d",*(*a+i));//输出数组中的第i个元素int *c[4];//指针数组//c=b;//不能这样用//应当这样给指针数组赋值for(i=0;i<3;i++)c[i]=b[i];//打印数组内容//方法一for(i=0;i<3;i++)for(j=0;j<4;j++)//printf("%3d",*(*(c+i)+j));//printf("%3d",c[i][j]);//方法二for(i=0;i<12;i++)printf("%3d",*(*a+i));//输出数组中的第i个元素小结:指针数组与数组指针的区别在于,数组指针可以直接赋值,,而指针数组则不可以。它们的相同之处在于,在使用时,都可以用指针或数组的形式。数组与指针的区别(易出错地方):1.常量字符串的内容是不可以被修改的!char a[]="hello";a[0]=’x’;printf("%s",a);//输出xellochar *p="hello";//p指向常量字符串p[0]=’x’;printf("%s",a);//报错,常量字符串的内容是不可以被修改的2.内容赋值与比较char a[]="hello";char b[10];//b=a;//错误strcpy(b,a);//将字符串a拷贝给b,不能用b=aif(strcmp(b,a)==0)//比较a,b字符串是否相等,不能用if(a==b)int len = strlen(a);char *p = (char *) malloc (sizeof(char));//p=a;//将a的首地址赋值给指针变量pstrcpy(p,a);//将a数组的内容赋值给指针变量pif(strcmp(b,a)==0)//判断a,b内容是否相等//if(p=a)//判断p和a的地址是否相同

平平淡淡才是真

Summer493506332的专栏

相关文章:

你感兴趣的文章:

标签云: