C语言指针(2)

(1)指针操作 一维 字符数组 
1. 字符型数组 --- 存放字符串的
char s[] = "hello"

//s数组名代表数组首元素的地址 &s[0]
   --->地址的类型  char * 

注意:
   char s[] = "hello"; //s的空间开在 栈上 
   char *s1 = "hello"; //s1的空间开在栈上,但是s1指向的"字符串常量"
                       //存放"字符串常量区"
  *s1 = *s1 - 32; //报错,原因是 s1 指向的数据是在 字符串常量区
                  //常量区的数据不能修改 
   const int a = 10; //a成了只读变量 
   const char * s1 = "hello";   //表示 将 *s1 限定为只读
                               //如果,不希望修改 *s1 的数据
                               //一般 建议加上const 
  char * const s1 = "hello";  //const 离谁近,就是限定谁的 
  char const *s1 = "hello"; //此时 还是 *s1 不能被修改  
  char const * const s1 = "hello"; // *s1 和 s1 本身都不能被修改 

总结:
  1.const 离谁近,就限定谁 
  2.const 修饰的变量,为只读变量 //变量还是变量 只是成了只读的 

(2)指针 操作 二维数组 
int a[3][4] = {1,2,3,4,5,6,7,8,9};

a 还是首元素的地址 

int[4] a[3];  //a数组名 -- &a[0] 

a<=>&a[0]                                  a[0] //数据类型 int[4] 
  &a[0] //int[4] * 指针类型 
 //标准C语法: int (*)[4]

定义变量:
int (*p)[4]; //数组指针
             //基类型 int[4]这种类型 ---数组类型 
                          
*p //等价与 a[0] 
*(*(p+0)+0) <=> a[0][0]                        *(*(p+i)+j) <=> a[i][j]

(3)指针操作字符型二维数组

char s[5][10] = {"hello","world","china"}; //二维字符型数组 
char *s[ ] = {"hello","world","china"}; //指针的数组 --- 指针数组 

char(*p)[10] = s;

  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值