char a[]和int a[] cout<<a不同

问题描述

char a[]和int a[] cout<<a不同
c语言里面:
int a[]={1234};
cout<<a<<endl;

char b[]=""abcd"";
cout<<b<<endl;

为什么结果会不同,原理在哪

解决方案

字符数组是可以用这种方式输出的因为数组名即代表首地址数组是一块连续的内存空间所以能直接输出.如果是其他类型的数组则输出的是一个地址。
ostream的<<操作符 专门重载了char*的版本。因为char*很特殊,C里用它来表示字符串。

解决方案二:
这就是“多态”,相同的调用方式,具体到不同的类型,有不同的结果。再比如,你可以用同样的代码将数据送到流中,但是文件流是写文件,网络流是收发数据,而作为开发者你不用关心。

解决方案三:
在谭浩强的书里面说到过,数组名代表的是数组的首地址,int a[]char b[]的a,b指的都是存储a数组与字符串b数组的地址。a与b就是指针。
但是字符串数组有一个特性,就是你用cout输出函数进行输出时只需指明其首地址即可。
如果LZ学过C想想printf(""%s""b);与prrintf(""%d""&a[i])就可以了。

时间: 2024-11-03 21:15:19

char a[]和int a[] cout&amp;lt;&amp;lt;a不同的相关文章

c++-char型与int型之间算术运算问题

问题描述 char型与int型之间算术运算问题 最后运算结果为173 具体是怎么算出来的啊 解决方案 unsigend char表示0到255的数,7.4.1.254这里1-3=254.再次到这里应该是8.5.2.255最后才能循环到0,一共循环次数(256*2+7)/3次,所以结果为173 解决方案二: 关于int型和char型之间的转换int型和char型之间的类型转换 解决方案三: 循环中i变成负数了,unsigne是无符号的,会给你转成整数的值 解决方案四: ascii码直接对应 解决方

C++ 关于一个成员函数的实现问题

问题描述 C++ 关于一个成员函数的实现问题 /*CArray是我写的.能够运行的.利用类来实现动态创建数组的工程,现在要加一个成员函数,要求如上,我把我理解的操作都写了下来,但我的疑问是在第一个判断条件中,函数返回要怎么写,是要跳过这个函数吗?除了这点,我下面写的实现过程有错吗?在main函数中能够输出对象obj1 resize后的数组吗?请大神们多多指教~*/ #include <iostream> using namespace std; class CArray{ public:CAr

高分求解一道字符串问题

问题描述 高分求解一道字符串问题 定义有重复子串的字符串为M串如:AA:无重复子串的为N串如:AB,输入正数K和L,输出由前L个字符组成字典序第k小的N串,如L=3时,前三个N串为:A,AB,ABA,输入不超过50字符,例:输入:5 3:输出:ABACA 解决方案 int dfs(int cur) { if(cnt++ == n) {for(int i = 0; i < cur; i++) printf("%c",'A'+s[i]); printf(" ");

c++ 编程问题-我编得通讯录创建联系人函数哪儿有问题?

问题描述 我编得通讯录创建联系人函数哪儿有问题? #include using namespace std; struct contact { int ID; char name[10]; char ch; char phone[13]; char addr[31]; struct contact *next; }; class contacts { public: contacts(){front= new contact; front=NULL;} void AddCon(int n); ~

c++新手-C++简单题目,有悬赏!

问题描述 C++简单题目,有悬赏! c++ 写出了strcat和strlen函数,再输出拼接的字符串和其长度 cout<<strcat(p1,p2)<<strlen(strcat(p1,p2));错在哪里? 我编了一个strcat函数和strlen函数,大概是这样void str_cat(char*p1,char*p2)和int str_len(char*p),一个显示void不能用cout输出,一个是int类型不能变为char类型. 还有一个str_cmp(char*p1,*p2

命令行参数-C语言 字符串数组处理,50B,急求

问题描述 C语言 字符串数组处理,50B,急求 1.我想写一个程序:(C) 给定一个字符串"test" 生成一个字符串数组,元素分别为"test1","test2""test3""test4".(用for循环,元素数量可变) 2.为什么我程序在把命令行传入的参数赋值给一个字符串变量后,其余的字符串变量都变成了这个参数值?比如: tx[0]="KU"; printf("t1===

C++中与输入相关的istream类成员函数简介_C 语言

eof 函数 eof是end of file的缩写,表示"文件结束".从输入流读取数据,如果到达文件末尾(遇文件结束符),eof函数值为非零值(真),否则为0(假). [例] 逐个读入一行字符,将其中的非空格字符输出. #include <iostream> using namespace std; int main( ) { char c; while(!cin.eof( )) //eof( )为假表示未遇到文件结束符 if((c=cin.get( ))!=' ') //

在Visual Studio中用C++语言创建DLL动态链接库图文教程_C 语言

什么是DLL(动态链接库)? DLL是一个包含可由多个程序同时使用的代码和数据的库.例如:在Windows操作系统中,Comdlg32 DLL执行与对话框有关的常见函数.因此,每个程序都可以使用该DLL中包含的功能来实现"打开"对话框.这有助于促进代码重用和内存的有效使用.这篇文章的目的就是让你一次性就能了解和掌握DLL. 为什么要使用DLL(动态链接库)? 代码复用是提高软件开发效率的重要途径.一般而言,只要某部分代码具有通用性,就可以将它构造成相对独立的功能模块并在之后的项目中重复

C++语言基础 例程 标准输入流

贺老师的教学链接  本课讲解 例: 输入个数不确定的成绩 #include <iostream> using namespace std; int main( ) { float grade; cout<<"enter grade:"; while(cin>>grade)//能从cin流读取数据 { if(grade>=85) cout<<grade<<" GOOD!"<<endl; if