小编Pau*_*vie的帖子

如何/何时将内存分配给C中的全局变量

我知道C内存布局和二进制形成过程.我对有关何时以及谁为全局变量分配地址的阶段有疑问/疑问.

extern int dummy;  //Declared in some other file  
int * pTest = &dummy;
Run Code Online (Sandbox Code Playgroud)

这段代码汇编得很好.只有在为其分配地址时,pTest才会有虚拟地址.我想知道虚拟变量在哪个阶段(编译或链接器)获取地址?

c

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

在for语句中使用逗号?

我给出了如何将字符附加到 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语句中,我得到了评论“循环外的jk外将被循环内的jk内遮蔽”。

因此,在第一个示例中,逗号是一个顺序运算符,而在第二个示例中,逗号是声明符列表中的分隔符?

c

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

从 'char*' 到 'char' 的无效转换 [-fpermissive]

我想用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)

c algorithm

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

如何将字符串转换为 uint64_t?

这与其他问题不同(不是重复的)因为我在字符串中使用实际字符而不仅仅是数字,对于 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

c++

0
推荐指数
1
解决办法
161
查看次数

错误:使用未声明的标识符“类名”

我正在尝试实现一个“时间”类。我已将所有声明放在 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)

c++ class header-files c++11

0
推荐指数
1
解决办法
140
查看次数

调用函数时char数组[100]和char*数组之间的区别?

我想知道为什么这段代码可以正常使用,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 arrays recursion pointers palindrome

-1
推荐指数
1
解决办法
755
查看次数

标签 统计

c ×4

c++ ×2

algorithm ×1

arrays ×1

c++11 ×1

class ×1

header-files ×1

palindrome ×1

pointers ×1

recursion ×1