2014-05-10 251 views
-7

如果函數是在C++中這樣定義:這是什麼意思?

char *Func() { 

return "Text"; 
} 

然後;

Func()[] = 'a'; 

意思是什麼?

+1

_'Means什麼? '_你很容易失敗,無論你試圖用這個做什麼! –

+2

這意味着什麼,因爲編譯器錯誤會告訴你,如果你試圖編譯它。 –

+0

這個問題已經在面試中問過了,我不知道什麼是意思。函數如何創建數組? – Rohit

回答

7

這可能意味着面試官想測試你面對無效源代碼的反應。

我不知道Func()[] = 'a';的意圖是什麼。 C++編譯器3.4譁輸出如下:

a.cc:3:9: warning: conversion from string literal to 'char *' is deprecated 
     [-Wc++11-compat-deprecated-writable-strings] 
return "Text"; 
     ^
a.cc:6:1: error: C++ requires a type specifier for all declarations 
Func()[] = 'a'; 
^~~~ 
a.cc:6:5: error: function cannot return array type 'int []' 
Func()[] = 'a'; 
+0

它可能想知道,如果你知道代碼是無效的,爲什麼... – Massa

+0

這將是很好的概述爲什麼這個片段是註定要失敗,因爲這是一個答案 – user2485710

1

一旦你得到它的編譯(僅僅)是這樣的:

#include <iostream> 

char *Func() { 

return "Text"; 
} 

int main() { 
    std::cout << Func() << std::endl; 

    Func()[0] = 'P'; 

    std::cout << Func() << std::endl; 

    return 0; 
} 

你得到這樣的:

Compiling the source code.... 
$g++ -std=c++11 main.cpp -o demo -lm -pthread -lgmpxx -lgmp -lreadline 2>&1 
main.cpp: In function ‘char* Func()’: 
main.cpp:5:9: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings] 
    return "Text"; 
     ^

Executing the program.... 
$demo 
Text 
Segmentation fault (core dumped) 
+0

原始片段不使用任何索引'[]'運算符。 – user2485710

+0

我知道。沒有索引它根本不會編譯。 –