使用char指针和整数指针

时间:2016-11-29 06:56:57

标签: c pointers char char-pointer

我的问题是关于取消引用字符指针

这是我的代码 -

#define MAX 10

char s[80]="Hello";

int main(){

    char *stackValue;

    stackValue=&s;//here I assined the address of s to stackValue

    if(!stackValue){

        printf("No place for Value");

        exit(1);

    }

    else{

        printf("\n%s",*stackValue);//This doesn't work with * before it 

        printf("\n%s",stackValue);//This works properly
    }
    return 0;
}

在上面的代码中,我已经将S []的地址分配给stackValue,当我打印* stackValue时,它不起作用,

但如果我只打印'stackValue'那就行了。

当我用Integer做同样的事情时

int main(){
    int i=10, *a; 
    a=&i;
    printf("%d",*a);//this gives the value 
    printf("%d",a)//this gives the address
    return 0;
}

打印字符指针和整数指针是否不同。当我在int值中使用*时,它给出了值,但是当我将它用作char指针时会出错。

帮帮我吧?

3 个答案:

答案 0 :(得分:1)

使用第一个代码段:

List<Set<Integer>>不正确,因为stackValue=&s;已经是char的数组。如果你这样写,那么s变为指向的指针到char(不是指向char的指针)。

通过更改为stackValue

来解决此问题

此外,再次stackValue=s;期望指向char的指针(不是指向char的指针) - 这解释了为什么这不起作用 %s

您需要printf("\n%s",*stackValue); // this doesn't work

使用第二个代码段。

printf("\n%s",stackValue);没问题,因为a=&i;是一个i,而不是数组。

答案 1 :(得分:0)

"%s"的{​​{1}}格式说明符始终需要printf参数。 所以这是正确的工作和正确的陈述

char*

并在第一个语句中传递值,因此它将为您提供未定义的行为。

答案 2 :(得分:0)

你要做的是:

int main(void)
{
    char a_data = "Hello, this is example";
    char *pa_stack[] = {a_data};

    printf("We have: %s\n", *pa_stack);
}