导航:首页 > 源码编译 > 编译后为什么会出现符串

编译后为什么会出现符串

发布时间:2022-04-04 15:56:49

‘壹’ 这个程序编译时没错 在运行后 会在复制后的字符串后面出现奇怪的图形 为什么高手看看

char* p;
scanf("%s",p);//p是指针,如果要存放字符的话,需要先分配空间给它...修改如下:
#include <stdio.h>
#include<stdlib.h>

int main(void)
{
char* p;
p=(char *)malloc(sizeof(char));
scanf("%s",p); // o: abc , x: abcd ???
printf("\n %s",p);
free(p);//记得释放内存,(*^__^*) 嘻嘻……
return 0;
};

‘贰’ 字符串应该用equals,但是用==,编译的时候为什么没有显示出错

对于字符串来说==比较的是两个字符串的内存地址是否一样,equals比较的是两个字符串的内容是否相同。所以用==不会报错,但是会返回false。

‘叁’ 执行下列C++程序之后,为什么会出现一大串字符"烫"呢怎么解决这个问题

你好,在C或者C++编译器中,字符串是以'\0'结尾,比如输出字符串到控制台时,会从字符指针指向的第一个字符开始,一直输出知道遇到'\0'字符。

这里,在输出zi数组时,zi数组里没有'\0'字符,因此,输出会超出zi数组大小,直到遇到'\0'字符,当然,超出部分都是一些原始内存,即我们看到的“烫”。

建议你在初始化zi数组前,将数组所有元素置为'\0',这样基本可以保证不会出现乱码。

‘肆’ c语言数据输出中为什么会后面多出字符串

C语言字符串类型为char *或char []

两者本质上是一样的

例如:

char*x="abc";

x指向'a'

x+1指向'b'

x+2指向'c'

x+3指向''

C语言在输出x时

从x指向的内容开始输出,一直到''为止

用char *定义x,会自动在末尾加上''

但用char []定义x,可能末尾没有''

如:

charx[3]={'a','b','c'};

此时系统输出x+2指向的'c'后

x+3不一定指向''

系统将会继续输出

直到发现''为止

所以C语言用字符串一定要特别小心

‘伍’ 字符║在c++编译之后输出U是怎么回事

是的,对于编译器来说,名字是不一样而且唯一的,编译器会对函数名“修饰”。

C++ 编译器的函数名修饰规则

函数名字修饰(Decorated Name)方式

函数的名字修饰(Decorated Name)就是编译器在编译期间创建的一个字符串,用来指明函数的定义或原型。LINK程序或其他工具有时需要指定函数的名字修饰来定位函数的正确位置。多数情况下程序员并不需要知道函数的名字修饰,LINK程序或其他工具会自动区分他们。当然,在某些情况下需要指定函数的名字修饰,例如在C++程序中,为了让LINK程序或其他工具能够匹配到正确的函数名字,就必须为重载函数和一些特殊的函数(如构造函数和析构函数)指定名字装饰。另一种需要指定函数的名字修饰的情况是在汇编程序中调用C或C++的函数。如果函数名字,调用约定,返回值类型或函数参数有任何改变,原来的名字修饰就不再有效,必须指定新的名字修饰。C和C++程序的函数在内部使用不同的名字修饰方式,下面将分别介绍这两种方式。

1. C编译器的函数名修饰规则

对于__stdcall调用约定,编译器和链接器会在输出函数名前加上一个下划线前缀,函数名后面加上一个“@”符号和其参数的字节数,例如_functionname@number。__cdecl调用约定仅在输出函数名前加上一个下划线前缀,例如_functionname。__fastcall调用约定在输出函数名前加上一个“@”符号,后面也是一个“@”符号和其参数的字节数,例如@functionname@number

2. C++编译器的函数名修饰规则

C++的函数名修饰规则有些复杂,但是信息更充分,通过分析修饰名不仅能够知道函数的调用方式,返回值类型,参数个数甚至参数类型。不管__cdecl,__fastcall还是__stdcall调用方式,函数修饰都是以一个“?”开始,后面紧跟函数的名字,再后面是参数表的开始标识和按照参数类型代号拼出的参数表。对于__stdcall方式,参数表的开始标识是“@@YG”,对于__cdecl方式则是“@@YA”,对于__fastcall方式则是“@@YI”。参数表的拼写代号如下所示:
X--void
D--char
E--unsigned char
F--short
H--int
I--unsigned int
J--long
K--unsigned long(DWORD)
M--float
N--double
_N--bool
U--struct
....
指针的方式有些特别,用PA表示指针,用PB表示const类型的指针。后面的代号表明指针类型,如果相同类型的指针连续出现,以“0”代替,一个“0”代表一次重复。U表示结构类型,通常后跟结构体的类型名,用“@@”表示结构类型名的结束。函数的返回值不作特殊处理,它的描述方式和函数参数一样,紧跟着参数表的开始标志,也就是说,函数参数表的第一项实际上是表示函数的返回值类型。参数表后以“@Z”标识整个名字的结束,如果该函数无参数,则以“Z”标识结束。下面举两个例子,假如有以下函数声明:

int Function1 (char *var1,unsigned long);
其函数修饰名为“?Function1@@YGHPADK@Z”,而对于函数声明:
void Function2();
其函数修饰名则为“?Function2@@YGXXZ” 。

对于C++的类成员函数(其调用方式是thiscall),函数的名字修饰与非成员的C++函数稍有不同,首先就是在函数名字和参数表之间插入以“@”字符引导的类名;其次是参数表的开始标识不同,公有(public)成员函数的标识是“@@QAE”,保护(protected)成员函数的标识是“@@IAE”,私有(private)成员函数的标识是“@@AAE”,如果函数声明使用了const关键字,则相应的标识应分别为“@@QBE”,“@@IBE”和“@@ABE”。如果参数类型是类实例的引用,则使用“AAV1”,对于const类型的引用,则使用“ABV1”。下面就以类CTest为例说明C++成员函数的名字修饰规则:

1
2
3
4
5
6
7
8
9
10
11
12

class CTest
{
......
private:
void Function(int);
protected:
void CopyInfo(const CTest &src);
public:
long DrawText(HDC hdc, long pos, const TCHAR* text, RGBQUAD color, BYTE bUnder, bool bSet);
long InsightClass(DWORD dwClass) const;
......
};

对于成员函数Function,其函数修饰名为“?Function@CTest@@AAEXH@Z”,字符串“@@AAE”表示这是一个私有函数。成员函数CopyInfo只有一个参数,是对类CTest的const引用参数,其函数修饰名为“?CopyInfo@CTest@@IAEXABV1@@Z”。DrawText是一个比较复杂的函数声明,不仅有字符串参数,还有结构体参数和HDC句柄参数,需要指出的是HDC实际上是一个HDC__结构类型的指针,这个参数的表示就是“PAUHDC__@@”,其完整的函数修饰名为“?DrawText@CTest@@QAEJPAUHDC__@@JPBDUtagRGBQUAD@@E_N@Z”。InsightClass是一个共有的const函数,它的成员函数标识是“@@QBE”,完整的修饰名就是“?InsightClass@CTest@@QBEJK@Z”。

‘陆’ 在c语言中哪几种初始化字符串时,编译器会自动给字符串加上结束符

strncpy(gps_gprmc.gps11_date,p1,(gps_td-1));
这一句是将p1(p1是个字串)中取前(gps_td-1)的字符组成的子串,然后给gps_gprmc.gps11_date。(请注意这里所指向的内容不再是0了)
gps_gprmc.gps11_date[gps_td-1]
=
0;这个就很好理解了,就是将这个子字串的第gps_td-1个字符取为0。
希望对你有帮助

‘柒’ 在不同的c语言程序中,同一字母编译后产生的字符串一样吗

你想表达什么?
C语言是个标准,它只有一种,目前最新的是ISO
C
11(C的编译器有多种,而C的源程序就无数了)
另外一个字母怎么可能产生一个串?

‘捌’ 输出字符串的时候为什么会出现小方块(C语言)

一、输出格式可能不对,建议改变一下输出格式再试试,实在不行就把所有的的格式实验一遍,个人觉得使用s%输出应该就没问题了。
二、编码方式设置不一致,建议使用某pad++打开,修改统一编码,建议UTF-8,然后再重新编译运行,还有就是设置编译器的默认编码。

阅读全文

与编译后为什么会出现符串相关的资料

热点内容
甘肃好货日报app是什么 浏览:644
电脑上的服务器地址从哪里找啊 浏览:383
精雕App是什么 浏览:102
天猫魔盒用什么app当遥控器 浏览:602
程序员是五笔还是拼音 浏览:272
加密货币机制 浏览:300
防止反编译源代码 浏览:978
黑魂二服务器为什么登不上 浏览:736
云服务器挂载cos 浏览:326
纵筋加密区在图纸上怎么表示的 浏览:187
几个云服务器哪个划算 浏览:63
n次方怎么算app 浏览:534
服务器是如何同时为多个客户端提供服务 浏览:576
从极点命令 浏览:153
phpyaml解析 浏览:621
pic16c57c单片机教程 浏览:718
WindowsPerl编译安装 浏览:667
在哪个app可以看明侦 浏览:716
服务器里面的pfr什么作用 浏览:292
服务器为什么配置多张网卡 浏览:986