int (*v)[10];
在 Visual C++ 里面不能与 int **v 等同起来。
举个例子:
int **p;
int (*v)[10];
int a[10][10];
如果写 v = a 是可以的。
如果写 p = a 将会引起一个类型不匹配的编译错误。

二级指针(int **p)需要自己指向一个一级指针,而二维数组则
不是这样。编译器为了节省空间和时间,没有采用指针指向指针的方法,而是将数组现
行地存放在内存中。这样一来,int (*v)[10] 也就成了 C 语言的一种特殊语法,它只
能表示 v 指向第一维具有 10 个元素的二维数组的头部。这样 v 的类型与 a[10][10]
正好匹配,v 的类型与 b[5][10](比如说定义了 b)也是匹配的。但是 v 不能匹配
c[5][5] 因为 c 的内存分布中每隔 5 个元素就把第二维的下标加一。

可以这样写,呵呵……

  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. int main()
  4. {
  5. //local declarations
  6. int **pointer;
  7. int count;
  8. int i;
  9. int *p;
  10. //statements
  11. pointer= (int **)malloc (sizeof(int *) *10);
  12. for( count=0; count < 10; count++ )
  13. pointer[count]=(int *)malloc(sizeof(int) * 10);
  14. for(count=0; count< 10; count++)
  15. {
  16. p=*(pointer+count);
  17. for(i=0; i<10; i++)
  18. *(p+i)=count;
  19. }//for
  20. for(count=0; count<10; count++)
  21. {
  22. for(i=0;i<10;i++)
  23. printf("%6d",*(*(pointer+count)+i));
  24. printf("\n");
  25. }//for
  26. return  0;
  27. }//main

复制代码

这样 pointer 也可以作为二维数组来使用,但是每两个下标相邻的元素在内存中的地址不一定
是相邻的,而且还有 10 个一维指针占用内存空间作为桥梁。

char **str1=NULL;
 char *x="zhang";
 str1=&x;

char **p, char a[16][8]; 问:p=a 是否会导致程序在以后出现问题?为什么?相关推荐

  1. const char * 和 char const * 和 char * const 区别

    我们都用过const 修饰符修饰一个变量,而且我们知道使用const修饰之后,这个变量相当于常量了,他的值在代码其他部分不能再修改,这对于函数调用时候,防止错误的修改原本不应修改的变量起到很大作用,举 ...

  2. C++中string、char *、char[]的转换

    C++中string.char *.char[]的转换 头段时间有人问过我这个问题,可是我一点头绪都没有,直接说不会.现在从网上找了点资料,看了看,知道点东西了. 一.string转char*. 主要 ...

  3. linux strcpy函数实现,strcpy(char *dest , char *src)的漏洞

    前言:研究了几天DOS下的溢出原理,最后明白了其实原理都很简单关键是要懂得为什么C语言的strcpy函数有漏洞,为什么对这个函数的不正常使用会造成溢出. 一节:介绍strcpy函数能看到这篇文章的人可 ...

  4. char *与char []

    由于指针的灵活性,导致指针能代替数组使用,或者混合使用,这些导致了许多指针和数组的迷惑,因此,刻意再次深入探究了指针和数组这玩意儿,其他类型的数组比较简单,容易混淆的是字符数组和字符指针这两个...下 ...

  5. const char*p,char const*p,char *const p

    转自 http://blog.csdn.net/todd911/article/details/7911995 const char*, char const*, char*const的区别问题几乎是 ...

  6. c语言char aa 1000,char ** 与char * a[ ] 区别

    先看 char  *a [ ] ; 由于[ ] 的优先级高于* 所以a先和 [ ]结合,他还是一个数组,数组中的元素才是char * ,前面讲到char * 是一个变量,保存的地址.. 所以 char ...

  7. 深入理解char * ,char ** ,char a[ ] ,char *a[]

    1.数组的本质 数组是多个元素的集合,在内存中分布在地址相连的单元中,所以可以通过其下标访问不同单元的元素. 2.指针 指针也是一种变量,只不过它的内存单元中保存的是一个标识其他位置的地址.由于地址也 ...

  8. EXCEL的换行符等,输入,替换,和 char(10) char(13)等

    1 如何输入换行 不设置,输入 alt+enter ,单元格强制换行 设置为自动换行,输入较多内容,只会讲单元格扩充到一定场地,并不会自动根据内容换行 设置为自动换行, =""&a ...

  9. char与signed char, unsigned char的区别

    一.开始 今天有一个困扰的问题,就是char与signed char, unsigned char这三者的区别. 二.三者之间 1.ANSI C 提供了3种字符类型,分别是char.signed ch ...

  10. C语言对于char*和char[]的理解

    C语言对于char*和char[]的理解 1.char*和char[]的共同点 2.char*的用法 3.char[]的用法 4.怎么输出char*地址 5.strlen和sizeof 6.char* ...

最新文章

  1. 一卡顶四卡,清华推出工具包BMInf玩转百亿大模型
  2. mysql back blog_mysql的备份Xtrabackup
  3. LoadRunner Interview Questions
  4. 基于HiKariCP组件,分析连接池原理
  5. 统计学硕士考计算机博士,统计学国家重点学科博士点硕士点最全博研堂考研究生.pdf...
  6. 昆仑万维C++工程师笔试
  7. java语言的科学与艺术-编程练习10.4
  8. C++读取字符串中的数字的方法
  9. 五款可以取代 Slack 的开源工具
  10. Python基础灬函数补充(作用域,迭代器,生成器)
  11. java基础70 负责静态的网页制作语言XML(网页知识)
  12. hardmard积 用什么符号表示_[关于数学哲学的科普]为数学学习准备的基础数理逻辑(用自然推理系统展现的命题演算以及一阶谓词演算)...
  13. selenium + java po模式
  14. Centos上PostgreSQL9.3的安装
  15. 哪款scrm系统性价比更高?更受企业的欢迎?
  16. 关于概要设计文档的写作
  17. 微信openid你了解多少?appid,appsecert又是啥?
  18. jq追加html点击事件,jq增加点击事件 Jquery为DIV添加点击事件
  19. 音箱高音测试电脑软件,BOSE MusicMonitor电脑扬声器晒单 使用体验_什么值得买
  20. Python处理CSV文件(二)

热门文章

  1. LVS--NAT模型配置
  2. git log友好显示
  3. 考研数学:【以错补错】 降低做题出错率
  4. (function ( ){...})( ) IIFE 的原理
  5. 转:HTTP协议简介与在python中的使用详解
  6. 蓝桥杯——机器人行走
  7. C# 特性(Attribute)
  8. Sprint2团队贡献分
  9. pku 3252 Round Numbers 组合数学 找规律+排列组合
  10. css框架:五大css流行框架的总结-css教程-PHP中文网