我知道C内存布局和二进制形成过程.我对有关何时以及谁为全局变量分配地址的阶段有疑问/疑问.
extern int dummy; //Declared in some other file
int * pTest = &dummy;
Run Code Online (Sandbox Code Playgroud)
这段代码汇编得很好.只有在为其分配地址时,pTest才会有虚拟地址.我想知道虚拟变量在哪个阶段(编译或链接器)获取地址?
我给出了如何将字符附加到 C 中的字符串数组的答案,但似乎在理解for语句的初始值设定项部分中逗号的使用时有问题:
int i, j, k;
for (i=0, j=0, k=0;
Run Code Online (Sandbox Code Playgroud)
在这个for语句中,逗号是一个执行三个初始化的顺序运算符。
int j, k;
for (int i=0, j=0, k=0;
Run Code Online (Sandbox Code Playgroud)
在这个for语句中,我得到了评论“循环外的j和k外将被循环内的j和k内遮蔽”。
因此,在第一个示例中,逗号是一个顺序运算符,而在第二个示例中,逗号是声明符列表中的分隔符?
我想用C语言制作收银程序。detail[i].name我使用记录结构,但问题是当我尝试按定义的项目名称和detail.[i].price循环价格显示付款收据时,我收到此消息
[错误]从“char*”到“char”的转换无效[-fpermissive]
这是我的脚本
#include<stdio.h>
#include <stdlib.h>
struct item{
char name[10];
int price;
int barcode;
};
struct item detail[10]={
"item1",10,1,
"item2",20,2,
"item3",30,3,
"item4",40,4,
"item1",50,5,
"item2",60,6,
"item3",70,7,
"item4",80,8,
"item3",90,9,
"item4",100,10
};
int main(){
int ibarcode[10];int qty[10];char b[10];int price[10];int ju[10];int tot[10];
int j,i,k,grand;
char a;
printf("Cashier program\n");
for(j=0;j<10;j++){
printf("enter barcode : ");scanf("%d",&ibarcode[j]);
for(i=0;i<10;i++){
if(ibarcode[j]==detail[i].barcode){
printf("item name: %s\n",detail[i].name);
printf("price : %d\n",detail[i].price);
printf("Quantity : ");scanf("%d",&qty[j]);
tot[j]=detail[j].price*qty[j];
}
if(ibarcode[j] > 10){
printf("Barcode not valid\n");
j--;
break;
}
}
printf("\nDo you want to …Run Code Online (Sandbox Code Playgroud) 这与其他问题不同(不是重复的)因为我在字符串中使用实际字符而不仅仅是数字,对于 atoi 和 stoi 和 stoll 我不能这样做,因为它是无效的
到目前为止我试过
std::string k = "MyString";
uint64_t test = (uint64_t)reinterpret_cast<std::string*>(&k);
printf("%hu \n", test);
Run Code Online (Sandbox Code Playgroud)
但是每次启动程序时它都会返回随机值。有任何想法吗?对不起,我有点新
它应该返回 5582584972703264359
我正在尝试实现一个“时间”类。我已将所有声明放在 Time.h 中,并将实现放在 Time.cpp 中。然后我在一个单独的文件 Test.cpp 中测试它。编译 Time.cpp 文件时,出现此错误error: use of undeclared identifier 'Time'。这是代码,
时间.h
#ifndef _TIME_H_
#define _TIME_H_
#include <iostream>
class Time
{
public:
Time();
// extra constructor not provided in part 3
Time(int hour, int min = 0, int h = 0);
void setTime(int h, int m, int s);
Time operator+(unsigned int n) const;
Time& operator+=(unsigned int n);
Time& operator++(); // prefix version
Time operator++(int n); // postfix version
// member functions you have to implement …Run Code Online (Sandbox Code Playgroud) 我想知道为什么这段代码可以正常使用,char tab[100]但如果我使用它不起作用char *tab?fgets函数将char*数组作为参数对吗?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
Int Palindrome(char* str, int i, int j);
int main()
{
char tab[100];
printf("Enter your string : \n");
fgets(tab, 100, stdin);
int j = strlen(tab);
printf("%d\n", Palindrome(tab, 0, j - 2));
return 0;
}
int Palindrome(char* str, int i, int j)
{
if (i >= j)
{
printf("My word is a Palindrome !\n");
return printf("<(^w^)>\n");
}
else if (str[i] != str[j])
{
printf("My word is not …Run Code Online (Sandbox Code Playgroud) c ×4
c++ ×2
algorithm ×1
arrays ×1
c++11 ×1
class ×1
header-files ×1
palindrome ×1
pointers ×1
recursion ×1