欢迎分享,转载请注明来源:内存溢出
C语言-指针与取地址符问题
scanf及fscanf、sscanf等函数的原理是将数据读入到以某个内存地址为起始的长度为格式控制字符串给定的数据类型长度对应的连续内存空间内。例如scanf("%d",0x401040)代表从输入流中读取一个整型数,并将它保存到内存地址0x401040开始的相当于int型长度的内存空间内(x86上为4个字节)。因此,对于整型变量a来说,应该用scanf("%d",&a)代表将数据读入并保存到a对应的地址空间内。这是&stu[i]grade前面为什么需要取地址符&的原因。而对于char id[10]来说,id是一个char型数组名同时也是指向该数组首元的指针名,即id是一个char型指针。而我们都知道指针本身保存的就是内存地址的值,因此直接用scanf("%s",id)就可以将一串字符读入id所指向的内存空间内。注意前面的格式控制符%s代表一个不含空白符号的字符串。在调用getline之前,先调用tellg()得到当前位置,然后getline(),需要返回的时候调用seekg()。 代码如下: #include #include #include using namespace std; void main() { string s; char ch[500000]; ofstream ob1("abtxt"); ifstream ifs("e
赞
(0)
打赏
微信扫一扫
支付宝扫一扫
CSS画三角形、圆形、椭圆形总结
上一篇
2023-07-28
HBase写数据的异常问题以及优化
下一篇
2023-07-28
评论列表(0条)