当前位置: 首页 > news >正文

绵阳网站建设制作友情链接举例

绵阳网站建设制作,友情链接举例,淘宝客不做网站可以做么,申请注册公司流程及费用一道面试题引发的问题&#xff0c;首先要知道[]的优先级高于*&#xff0c;题目&#xff1a; char **p,a[6][8]; 问pa是否会导致程序在以后出现问题&#xff1f;为什么&#xff1f; 直接用程序说明&#xff1a; #include<stdio.h>void main(){ char **p,a[6][8]; p …

一道面试题引发的问题,首先要知道[]的优先级高于*,题目:

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

直接用程序说明:

复制代码
#include<stdio.h>

void main()
{
char **p,a[6][8];
p = a;
printf("\n");
}
复制代码

编译,然后就会发现通不过,报错:错误 1 error C2440: “=”: 无法从“char [6][8]”转换为“char **” 

于是乎,我看了下《C专家编程》里10.5节—使用指针向函数传递一个多维数组。

方法一,函数是 void fun(int arr[2][3]); 这种方法只能处理2行3列的int型数组。

方法二,可以省略第一维的长度。函数是 void fun(int arr[][3]);这种方式虽然限制宽松了一些,但是还是只能处理每行是3个整数长度的数组。

    或者写成这种形式 void fun(int (*arr)[3]);这是一个数组指针或者叫行指针,arr和*先结合使得arr成为一个指针,这个指针指向具有3个

    int类型数据的数组。

方法三,创建一个一维数组,数组中的元素是指向其他东西的指针,也即二级指针。函数是 int fun(int **arr);这种方法可以动态处理各行各列不一样长度的数据。

注意:只有把二维数组改成一个指向向量的指针数组的前提下才可以这么做!比如下面的程序可以正常输出abc:

复制代码
#include <iostream> 
using namespace std;
void test(char **ptr)
{
cout << *ptr << endl;
}

int main()
{
char *p[3] = {"abc", "def", "ghi"};
test(p);
return 0;
}
复制代码

在《C专家编程》10.3节的小启发里讲的很透彻:(以下这段文字及对比一定要认真分析!)

数组和指针参数是如何被编译器修改的?

数组名被改写成一个指针参数”规则并不是递归定义的。数组的数组会被改写成“数组的指针”,而不是“指针的指针”:

实参                                                      所匹配的形参

数组的数组          char c[8][10];                 char (*)[10];          数组指针

指针数组             char *c[10];                   char **c;               指针的指针

数组指针(行指针)  char (*c)[10];                 char (*c)[10];        不改变

指针的指针           char **c;                       char **c;               不改变

下面再看一个网友的一段分析相当给力的代码:

复制代码
#include "stdafx.h" 
#include <iostream>
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
int arr1[3];
int arr2[3];
int arr3[3];
int * ptr;
// ptr1是一个指向 int [3] 的指针,即ptr的类型和&arr1的类型是一样的,注意:arr1指向的内存区域定长
int ptr1[3][3]={{1,2,3},{1,2,3},{1,2,3}};
// ptr2是一个指向 int * 的指针,即ptr2的类型和&ptr是一样的,注意:ptr指向的内存区域不定长
int * ptr2[3]={arr1,arr2,arr3};
// ptr3是一个指向 int [3] 的指针,即ptr3的类型和&arr1的类型是一样的,注意:arr1指向的内存区域定长
int(* ptr3)[3]=&arr1;
ptr3=ptr1; // 没错,他们的类型相同
// ptr3=ptr2;//error 无法从“int *[3]”转换为“int (*)[3]
// ptr4是一个指向 int * 的指针,即ptr4的类型和&ptr是一样的,注意:ptr指向的内存区域不定长
int ** ptr4;
//ptr4=&arr1; //error 无法从“int (*)[3]”转换为“int **
ptr4=ptr2; // 没错,他们的类型相同
//ptr4=ptr3; // error 无法从“int (*)[3]”转换为“int **
return 0;
}

转载于:https://www.cnblogs.com/yzl050819/p/6655702.html

http://www.lbrq.cn/news/2659321.html

相关文章:

  • 在什么网站可以接活做百度账号登录不了
  • 无锡万度网站建设外包
  • com网站是用什么做的高明公司搜索seo
  • 深圳住房建设厅网站首页快速网站seo效果
  • 学校建设网站报告书长尾关键词排名推广
  • wordpress主题安装慢黑帽seo是什么意思
  • 网站建立电话短视频代运营合作方案
  • 自己做电商网站seo智能优化系统
  • 做原创音乐的网站建设网站公司
  • wordpress主页在seo中介平台
  • 仿站工具箱关键词林俊杰mp3下载
  • 有哪些推广的网站seo兼职
  • 故乡网站开发的意义汉中网站seo
  • 开关网站建设营销的方法手段有哪些
  • 网站类型定位宁波seo外包服务平台
  • 网站关键词搜索排名怎么做搜索引擎优化的内容包括
  • 网站建设制作、微信公众号百度贴吧广告投放价格
  • 个人网站备案成功后怎么做广州seo关键词
  • dz后台网站地图湖人最新排名最新排名
  • 如何做网站管理维护百度大数据预测平台
  • 怎么做简单的网站首页免费的h5制作网站
  • 用领导人在公司网站做宣传犯法吗注册城乡规划师
  • 重庆做网站的公司有哪些凤山网站seo
  • 岳阳网站制作网站推广的优化
  • 做电影网站程序哪个好哈尔滨电话本黄页
  • WordPress代码mac显示seo快速排名站外流量推广
  • 铜陵网站建设公司seo关键词排名优化app
  • 百度推广开户2400seo推广优化方案
  • 网站建设多久高端大气网站建设
  • 微商城网站开发百度品牌推广
  • 一些js数组去重的实现算法
  • 计算XGBoost分类模型的错误率
  • Cherryusb UAC例程对接STM32内置ADC和DAC播放音乐和录音(中)=>UAC+STM32 ADC+DAC实现录音和播放
  • n8n飞书webhook配置(飞书机器人、飞书bot、feishu bot)Crypto节点、js timestamp代码、Crypto node
  • Pytest项目_day08(setup、teardown前置后置操作)
  • 使用pybind11封装C++API