C++ 指向C+中字符数组的指针+;
我不明白以下几点:C++ 指向C+中字符数组的指针+;,c++,pointers,C++,Pointers,我不明白以下几点: int main() { char ch[13] = "hello world"; function(ch); return 0; } void function( char *ch) { cout << ch; } intmain(){ char ch[13]=“你好,世界”; 功能(ch); 返回0; } void函数(char*ch){ cout当您直接或使用指向该数组的显式指针将数组传递到函数中时,它的功能已衰退
int main() {
char ch[13] = "hello world";
function(ch);
return 0;
}
void function( char *ch) {
cout << ch;
}
intmain(){
char ch[13]=“你好,世界”;
功能(ch);
返回0;
}
void函数(char*ch){
cout当您直接或使用指向该数组的显式指针将数组传递到函数中时,它的功能已衰退,您无法对该项调用sizeof()
,因为它实际上变成了指针
因此,完全有理由取消对它的引用,并调用
另请看以下示例:
#include <iostream>
using namespace std;
int fun(char *arr) {
return sizeof(arr);
}
int fun2(char arr[3]) {
return sizeof(arr); // It's treating the array name as a pointer to the first element here too
}
int fun3(char (&arr)[6]) {
return sizeof(arr);
}
int main() {
char arr[] = {'a','b','c', 'd', 'e', 'f'};
cout << fun(arr); // Returns 4, it's giving you the size of the pointer
cout << endl << fun2(arr); // Returns 4, see comment
cout << endl << fun3(arr); // Returns 6, that's right!
return 0;
}
#包括
使用名称空间std;
int-fun(字符*arr){
返回sizeof(arr);
}
int fun2(字符arr[3]){
return sizeof(arr);//这里也将数组名视为指向第一个元素的指针
}
int fun3(字符(&arr)[6]){
返回sizeof(arr);
}
int main(){
字符arr[]={'a','b','c','d','e','f'};
cout当您直接或使用指向该数组的显式指针将数组传递到函数中时,它的功能已衰退,您无法对该项调用sizeof()
,因为它实际上变成了指针
因此,完全有理由取消对它的引用,并调用
另请看以下示例:
#include <iostream>
using namespace std;
int fun(char *arr) {
return sizeof(arr);
}
int fun2(char arr[3]) {
return sizeof(arr); // It's treating the array name as a pointer to the first element here too
}
int fun3(char (&arr)[6]) {
return sizeof(arr);
}
int main() {
char arr[] = {'a','b','c', 'd', 'e', 'f'};
cout << fun(arr); // Returns 4, it's giving you the size of the pointer
cout << endl << fun2(arr); // Returns 4, see comment
cout << endl << fun3(arr); // Returns 6, that's right!
return 0;
}
#包括
使用名称空间std;
int-fun(字符*arr){
返回sizeof(arr);
}
int fun2(字符arr[3]){
return sizeof(arr);//这里也将数组名视为指向第一个元素的指针
}
int fun3(字符(&arr)[6]){
返回sizeof(arr);
}
int main(){
字符arr[]={'a','b','c','d','e','f'};
cout正如有人在comments部分中所说的,取消对数组指针的区分的结果是一个纯字符
让我解释一下原因:
您的ch
指针指示字符数组开头的地址,因此,当您调用cout时,正如有人在注释部分所述,取消对数组指针的区分的结果是一个普通字符
让我解释一下原因:
您的ch
指针指示字符数组开头的地址,因此当您调用时,可能会因为对char*
的延迟导致一个普通的char
值。数组实际上只是指向第一个元素的指针。数组名称是指向第一个元素的指针。因为对char*
的延迟会导致plainchar
value。数组实际上只是指向第一个元素的指针。数组名称是指向第一个元素的指针。谢谢!显然与cThanks中的outputstream printf相同!显然与c中的outputstream printf相同