第九天C语言自学笔记

一、二维指针的物理结构

char *buff[5];

 

buff[0] = "aaa";

buff[1] = "bbb";

buff[2] = "ccc";

buff[3] = "ddd";

 

遍历时:逻辑上有序,物理上无序

构造空间时,物理上无序空间变为逻辑上有序空间时,考虑用指针数组的方式来维护;

因为数组有有序下标,也可以去接收函数名,使其变得逻辑上有序

char *buff[xx];

 

一维指针

char a1[10];

char *p1=a1;

 

二维指针

用一个地址来保存buff的地址

*p2 = buff;//先把p2升级为地址*p2

char* *p2 = buff;//再使用char* 限定buff的访问行为

 

例:

int *p;

int a;

p=&a;//有效空间1个

 

int arr[2];

p = arr;//有效空间4个

 

char *buff[5];

char **p2 = buff;

char *aaa;

p2 = &aaa;

 

 

char *p1;//一个char一个char的访问

char * *p2;//一个字节地址一个字节地址的访问

int * *p3;//四个字节地址四个字节地址的访问

 

二、main的函数参数

#include<stdio.h>

 

int main(int argc,char **argv){

//int main(int argc,char *argv[]){

 int i = 0;

 for( i=0; i<argc; i++ ){

  printf("argv[%d] = %s\n",i,argv[i]);

 }

 printf("-------------\n");

 int j = 0;

 while(argv[j] != NULL){

  printf("argv[%d] = %s\n",j,argv[j]);

  j++;

 }

 

 return 0;

}

 

三、多维数组

1、多维数组的含义

一维数组:与内存一致,线性

char data1[10];//data1 连续空间集合第一个元素的地址标签 常量地址

char *p = data1;//p1 存储地址值的容器 地址的变量

 

二维数组:

char data2[3][4]; //data2 3个元素(首地址) 每个元素都是4个char

            //3行4列 二维平面

char data3[1][2]; *(data3 + 1) +2

 

 char data1[10];

 char data2[5][6];

 char data3[5][6][7];

  

 printf("%p %p\n",data2,data2+1);//偏移6个地址

 

 char *p1 = data1;

// char *p[6]; //存了六个地址, 

 char (*p2)[6] = data2;//存了一个地址

 char (*p3)[6][7] = data3;

 

 char (*p11)[10] = &data1;

 char (*p22)[5][6] = &data2;

 char (*p33)[5][6][7] = &data3;

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值