深入理解c语言指针-第四章

来源:互联网 发布:电子教室软件是什么 编辑:程序博客网 时间:2024/06/03 19:36

向量(一维数组)和矩阵(二维数组)

数组的定义:数组是同一类型的数据的集合

重点(同一类型),比喻int,char,long等,所以在内存中每一项占的空间的大小是相同的,所以在c语言中求解数组的长度便是 : sizeof(数组名<代表数组的起始地址>)/sizeof(数组的第一项),无论是不是字符串数组(即使字符串第一项只有两个字母,第二项有三个字母…)
这里写图片描述

数组和指针:
数组名是一个指针常量,指向数组的首地址

    int arr[3]  = {1,2,3};    printf("%d\n",arr[2]);    int *p = arr;    printf("%d\n",*(p+2));

vector[i]生成的代码和(vector+i)生成的不一样,vector[i]表示法生成的机器码从位置vector开始,移动i个位置,取出内容。而(vector+i)表示法生成的机器码则是从vector开始,在地址上增加i,然后取出这个地址中的内容。尽管结果是一样的,生成的机器码却不一样,对于大部分人来说,这种差别几乎无足轻重。

改变数组的长度?

一般传递数组,也需要传递数组的长度,因为你只传递了一个首地址

char *P;//在定义的时候*p表示是一个指针变量,指向一个变量的地址
char **pp;//两个*表示是一个指针变量,指向一个指针
char *parr[5];//因为数组就是一个常量指针,所以这样的定义就是同上面char **pp

    char *P;//在定义的时候*p表示是一个指针变量,指向一个变量的地址    char **pp;//两个*表示是一个指针变量,指向一个指针    char *parr[5];//因为数组就是一个常量指针,所以这样的定义就是同上面char **pp    char *tt[]= {"aaaa","bbbb","cccc"};    char **dd = tt;    printf("数组的长度%d\n",sizeof(tt));    int len = sizeof(tt);    int i = 0;    for(;i<len;i++){        printf("%s , %d , %d , %d , %s\n",*(tt+i),(tt+i),(*tt+i),(dd+i),(*(dd+i)));    }
原创粉丝点击