相关疑难解决方法(0)

当函数具有特定大小的数组参数时,为什么它被指针替换?

鉴于以下计划,

#include <iostream>

using namespace std;

void foo( char a[100] )
{
    cout << "foo() " << sizeof( a ) << endl;
}

int main()
{
    char bar[100] = { 0 };
    cout << "main() " << sizeof( bar ) << endl;
    foo( bar );
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出

main() 100
foo() 4
Run Code Online (Sandbox Code Playgroud)
  1. 为什么数组作为指向第一个元素的指针传递?
  2. 它是C的遗产吗?
  3. 标准说什么?
  4. 为什么C++的严格类型安全性下降了?

c++ arrays standards sizeof function-parameter

65
推荐指数
2
解决办法
3万
查看次数

字符串文字:指针与字符数组

在这个声明中:

char *a = "string1"
Run Code Online (Sandbox Code Playgroud)

究竟什么是字符串文字?是string1吗?因为这个线程C和C++中字符串文字的类型是什么?说些不同的东西.

据我所知

int main()
{
    char *a = "string1"; //is a string- literals allocated memory in read-only section.
    char b[] = "string2"; //is a array char where memory will be allocated in stack.

    a[0] = 'X'; //Not allowed. It is an undefined Behaviour. For me, it Seg Faults. 
    b[0] = 'Y'; //Valid. 

    return 0;
} 
Run Code Online (Sandbox Code Playgroud)

请添加除上述要点之外的一些细节.谢谢.

调试输出显示错误 a[0] = 'Y';

Reading symbols from /home/jay/Desktop/MI/chararr/a.out...done.
(gdb) b main
Breakpoint 1 at 0x40056c: …
Run Code Online (Sandbox Code Playgroud)

c segmentation-fault string-literals

9
推荐指数
1
解决办法
1万
查看次数

这段代码中的指针错误是什么?

我试图理解指针,这是我正在尝试实施的K&R程序.该程序是strcpy与KR的代码.

/*strcpy: copy t to s; pointer version 3*/
void strcpy(char *s, char *t){

while(*s++ = *t++)     
    ;              
}
Run Code Online (Sandbox Code Playgroud)

所以为了实现这个程序,我补充道

#include<stdio.h>
int main(){

    char *s="abc", *t="ABC" ;

    strcpy(s,t);
    printf("%s\n",t);

    printf("%s\n", s);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

但是,当我运行它时,我收到分段错误.我确信我错过了一些东西,但不太确定是什么.

谢谢!

c string pointers

1
推荐指数
2
解决办法
119
查看次数