指针进阶(四)(跑路人笔记2)

简介: 指针进阶(四)(跑路人笔记)

第六题

int main()
{ 
  int aa[2][5] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };  
  int *ptr1 = (int *)(&aa + 1);   
  int *ptr2 = (int *)(*(aa + 1));   
  printf( "%d,%d", *(ptr1 - 1), *(ptr2 - 1));  
  return 0; 
}
//答案: 10 5



第一个答案: &aa得到的是整个数组的地址+1就是跳过了整个数组所以ptr1指向数组后第一个元素-1后就指向10.

第二个答案: 我们对二维数组解引用时为了精准到元素是要两次解引用的, 如果只一次解引用就会得到行数组的首元素地址+1就跳过一行所以第二个答案是5


对第二个答案的详解: 对于二维数组来说哪aa举例我们要使用它时格式为aa[1][2] = 8其实aa[1][2] 和*(*(aa+1)+2) 而我们ptr2中*(aa+1)就是跳过了一行所以我们的ptr2就指向了第二行的首元素及指向6所以第二个答案为5.


第七题

#include <stdio.h>
int main() 
{
  char *a[] = {"work","at","alibaba"};//指针数组
  char**pa = a;
  pa++;
  printf("%s\n", *pa); 
  return 0;
}
//答案: at



解析: a作为指针数组每个元素都指向一个字符串二级指针pa指向a的首元素pa++后指向第二个元素及at.


第八题

int main()
{
  char *c[] = {"ENTER","NEW","POINT","FIRST"};
  char**cp[] = {c+3,c+2,c+1,c};
  char***cpp = cp;
  printf("%s\n", **++cpp); 
  printf("%s\n", *--*++cpp+3); 
  printf("%s\n", *cpp[-2]+3); 
  printf("%s\n", cpp[-1][-1]+1); return 0;
}
  //答案: POINT ER ST EW


这道题比较难大家要耐心看解析

解析

第一个答案: ++cpp指向c+2 为"POINT"(cpp值已经发生了改变)

第二个答案: 优先级和指针的重复考察首先优先级 : ++ * 和 – 为一个等级 +3是等级最低我们结合性是从左到右首先++ 我们的cpp就指向了cp数组中的c+1然后解引用就为c+1后–;c+1就成了c(注cp数组里的c+1就变成了c了)就指向首元素地址了然后再解引用为c首元素地址ENTER再+3 就指向ENTER中的E用字符串形势打印就成了ER.

第三个答案: 中cpp已经指向了cp中的第三个元素(现在是c而不是c+1),所以cpp[-2]就是cp中的首元素c+3 再次解引用后就是FIRST 再+3后指向了S打印后就是ST

(cpp[-2]等价与*(cpp-2)现在的cpp没有改变).

第四个答案: cpp[-1][-1]相当于*(*(cpp-1)-1) 原本cpp指向cp中的第三个元素-1后解引用就是第二个c+2再-1 后解引用就是c+1的元素指向NEW的指针最后再+1就是指向E用字符串打印后就是EW.


相关文章
|
7月前
|
C语言
指针进阶(C语言终)
指针进阶(C语言终)
|
7月前
|
C语言
指针进阶(回调函数)(C语言)
指针进阶(回调函数)(C语言)
|
7月前
|
存储 C语言 C++
指针进阶(函数指针)(C语言)
指针进阶(函数指针)(C语言)
|
7月前
|
编译器 C语言
指针进阶(数组指针 )(C语言)
指针进阶(数组指针 )(C语言)
|
7月前
|
搜索推荐
指针进阶(2)
指针进阶(2)
56 4
|
7月前
指针进阶(3)
指针进阶(3)
50 1
|
7月前
|
C++
指针进阶(1)
指针进阶(1)
49 1
|
7月前
|
存储 安全 编译器
C++进阶之路:何为引用、内联函数、auto与指针空值nullptr关键字
C++进阶之路:何为引用、内联函数、auto与指针空值nullptr关键字
55 2
|
7月前
|
Java 程序员 Linux
探索C语言宝库:从基础到进阶的干货知识(类型变量+条件循环+函数模块+指针+内存+文件)
探索C语言宝库:从基础到进阶的干货知识(类型变量+条件循环+函数模块+指针+内存+文件)
60 0
|
7月前
|
存储 安全 编译器
C++进阶之路:探索访问限定符、封装与this指针的奥秘(类与对象_上篇)
C++进阶之路:探索访问限定符、封装与this指针的奥秘(类与对象_上篇)
52 0