Posts Tagged ‘语法’

2009/08/22

D大同学   曰:数组作为参数会退化为指针,这个规则应该牢记。。。

KC  曰:当数组首地址被作为指针传…

Tags: ,,. 6,316 views
2009/08/14

一段时间没用数组指针,居然忘记了这个语法了,调试了半天都不行,真郁闷… 我贴出一段代码来描述我的意思。 QUOTE: 有问题的代码 #include<iostream> using namespace std; void print(int *p) {     int i,j;     for(i=0;i<20;i++)//一种打印方式     {         for(j=0;j<3;j++)         cout<<p[i][j]<<",";     }     cout<<endl;     for(i=0;i<20;i++)//另一种打印方式     {         for(j=0;j<3;j++)         cout<<*(*(p+i)+j)<<",";     } } int main() {     int array[20][3];     for(int i=0;i<20;i++)//赋值     {         for(int j=0;j<3;j++)         array[i][j]=i+j+2;     }     print(array);//打印     return 0; } //如果把array改成char型呢?相应的函数定义怎么改? 如果把array改成char型呢?相应的函数定义怎么改? [ 本帖最后由 52computer 于 2009-3-10 14:13 编辑 ] ———————————————————————                         热心人的解答 ——————————————————————— #include using namespace std; void print(int p[][3]) {         int i,j;         for(i=0;i<20;i++)//一种打印方式         {                 for(j=0;j<3;j++)                     cout<<<",";         }         cout<         for(i=0;i<20;i++)//另一种打印方式         {                 for(j=0;j<3;j++)                         cout<<*(*(p+i)+j)<<",";         } } […]

Tags: ,. 2,605 views

转载: 为了避免同一个文件被include多次 1 #ifndef方式 2 #pragma once方式 在能够支持这两种方式的编译器上,二者并没有太大的区别,但是两者仍然还是有一些细微的区别。 方式一: #ifndef __SOMEFILE_H__ #define __SOMEFILE_H__ … … // 一些声明语句 #endif 方式二: #pragma once … … // 一些声明语句 #ifndef的方式依赖于宏名字不能**,这不光可以保证同一个文件不会被包含多次,也能保证内容完全相同的两个文件不会被不小心同时包含。当然,缺点就是如果不同头文件的宏名不小心“撞车”,可能就会导致头文件明明存在,编译器却硬说找不到声明的状况 #pragma once则由编译器提供保证:同一个文件不会被包含多次。注意这里所说的“同一个文件”是指物理上的一个文件,而不是指内容相同的两个文件。带来的好处是,你不必再费劲想个宏名了,当然也就不会出现宏名碰撞引发的奇怪问题。对应的缺点就是如果某个头文件有多份拷贝,本方法不能保证他们不被重复包含。当然,相比宏名碰撞引发的“找不到声明”的问题,重复包含更容易被发现并修正。 方式一由语言支持所以移植性好,方式二 可以避免名字重复

Tags: ,. 2,343 views