c语言(1)

来源:互联网 发布:卖淘宝号的网站 编辑:程序博客网 时间:2024/05/18 01:03
  • 关于指向数组的指针
void  main(){    int data[]={1,2,3,4};    int *p1 = data;    int *p2 = &data;    int i;    for(i=0;i<4;i++)    {    printf("%d  ",p1++);    printf("%d  ",p2++);    printf("%d  ",*p1++);    printf("%d  ",*p2++);    }}

可见&data等同于data
而下个程序则表明由于*data==data[0],所以data==&data[0]

void  main(){    int data[]={1};    printf("%x  ",data[0]);    printf("%x  ",&data[0]);    printf("%x  ",&data);    printf("%x  ",data);    }

  • 关于函数形参的问题
    有以下两个小程序:
void test1(int arg[]){printf("%d\n",arg[0]);}void test2(int *arg){printf("%d\n",arg[0]);}void  main(){int a[10]={0,1,2,3,4,5,6,7,8,9} ;test1(a[10]);test1(a);test2(a[10]);test2(a);}/*结果为1703828017038280*/

可见形参的数组就是指向首元素的指针,值得注意的是c语言中数组不能作为参数传递,但可以通过指针实现函数间对数组的操作。

  • 一个例子
    findValue查找函数:查询数组中是否有某一特定的整型参数,若有返还1 否则返回0
int findValue(int arr[],int arraySize,int value){    int i;    for(i=0;i<arraySize;i++)    {        if(arr[i]==value) {printf("find it  ");return 1;}    }    printf("dnt find  ");    return 0;}void main(){    int a[10]={0,1,2,3,4,5,6,7,8,9};    printf("%d\n",findValue(a,10,5));    printf("%d\n",findValue(a,10,100));}/*输出结果find it  1dnt find  0*/

  • 关于字符串数组
    字符串的本质就是数组,需要注意的是”123”相当于{‘1’,’2’,’3’,’\0’},程序如下:
void main(){    char a1[]={'n','e','\0'};    char a2[]="ne";    printf("a1:%s size:%d\n",a1,sizeof(a1));    printf("a2:%s size:%d\n",a2,sizeof(a2));}/* 输出结果为a1:ne size:3a2:ne size:3 */

  • 关于指针数组
    可以这样保存字符串:
char *animal={"dog","fish","cat","pig","goose"};

则有animal[0]=”dog”,animal[1]=”fish”…….
下面是一个关于指针数组的小程序:

void main(){    char *animal[]={"dog","fish","cat","pig","goose"};    int i;    printf("该指针数组所在内存为4*5=%d\n",sizeof(animal));    for(i=0;i<sizeof(animal)/sizeof(animal[0]);i++)    {        printf("%s\n",animal[i]);    }}/*运行结果为:该指针数组所在内存为4*5=20dogfishcatpiggoose*/

在内存中相当于
[‘d’,’o’,’g’,’\0’];
[‘f’,’i’,’s’,’h’,’\0’];
……
可见animal是一个存储了5个指针的数组,每个指针在内存中占4个字节
还有一种方式来存储多个字符串:

int animal[][6]={"dog","fish","cat","pig","goose"};

在内存中相当于
[‘d’,’o’,’g’,’\0’,’\0’,’\0’];
[‘f’,’i’,’s’,’h’,’\0’,’\0’];
……
显然这种存储方式比上一种要死板一些

原创粉丝点击