关于C++ 输出函数cout 与 printf 的区别

2020/05 23 22:05

我知道在C++中cout  和printf  都能用于输出,但是他俩肯定在输出的方式、细节上有差别的。

我想问 指针,char* p=“abcd”   按我的理解p就是存储地址的变量,输出p就应该是输出存储“abcd”的空间首地址。

用printf则输出的是存储“abcd”的空间首地址(这和我预想的一样),用cout输出p则整个字符数组都输出了,这是为什么?他们两个的输出方式到底有什么差别。以至于输出同一个变量会得到不同的结果?

比如:

   #include<iostream>

#include<stdio.h>

using namespace std;

int main () {

char* p=”abcd”;

cout$amp;printf(“%x                    %c”,p,*p);//这里p则输出的是存储“abcd”的空间首地址,*p则输出第一个字符a。

return 0;

}

#include <stdio.h>

#include <stdlib.h>

char count, *ptr, *p;

int main( void )

{

   ptr = (char* )malloc(35);

   p = ptr;

   for (count = 65; count < 91 ; count++)

       *p++ = count;

   *p = ‘\0’;

 

   puts(ptr);

   free(ptr);

   system(“PAUSE”);

   return 0;

}

这样可以打印字母出来,但为何我改成以下这样的代码就不行了?

#include <stdio.h>

#include <stdlib.h>

char count, *ptr, *p;

int main( void )

{

   ptr = (char* )malloc(35);

 

   for (count = 65; count < 91 ; count++)

       *ptr++ = count;

   *ptr = ‘\0’;

 

   puts(ptr);

   free(ptr);

   system(“PAUSE”);

   return 0;

}

其中一个重要的问题是:   *ptr = ‘\0’;  最存在最后的一个地址吗?请解释一下~

--转载请注明: http://xplat4m.com/archives/630

发表回复

欢迎回来 (打开)

(必填)