使用 char 指针和整数指针
working with char pointer and integer pointer
我的问题是关于取消引用 char 指针
这是我的代码 -
#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 指针时却给出了错误。
帮帮我?
第一个代码片段:
stackValue=&s;
不正确,因为 s
已经是一个要转换为字符的数组。如果你这样写然后 stackValue
变成 pointer to pointer to char (not pointer to char).
通过更改为 stackValue=s;
来解决这个问题
此外,再次 %s
期待一个指向 char 的指针(不是指向指向 char 的指针的指针)- 这解释了为什么这不起作用
printf("\n%s",*stackValue); // this doesn't work
您需要 printf("\n%s",stackValue);
。
第二个代码片段。
a=&i;
可以,因为 i
是单个 int
,不是数组。
printf
的 "%s"
格式说明符总是需要一个 char*
参数。
所以这是有效且正确的陈述
printf("\n%s",stackValue);
并且在第一个语句中你正在传递值所以它会给你未定义的行为。
您要执行的操作是:
int main(void)
{
char a_data = "Hello, this is example";
char *pa_stack[] = {a_data};
printf("We have: %s\n", *pa_stack);
}
我的问题是关于取消引用 char 指针
这是我的代码 -
#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 指针时却给出了错误。
帮帮我?
第一个代码片段:
stackValue=&s;
不正确,因为 s
已经是一个要转换为字符的数组。如果你这样写然后 stackValue
变成 pointer to pointer to char (not pointer to char).
通过更改为 stackValue=s;
此外,再次 %s
期待一个指向 char 的指针(不是指向指向 char 的指针的指针)- 这解释了为什么这不起作用
printf("\n%s",*stackValue); // this doesn't work
您需要 printf("\n%s",stackValue);
。
第二个代码片段。
a=&i;
可以,因为 i
是单个 int
,不是数组。
printf
的 "%s"
格式说明符总是需要一个 char*
参数。
所以这是有效且正确的陈述
printf("\n%s",stackValue);
并且在第一个语句中你正在传递值所以它会给你未定义的行为。
您要执行的操作是:
int main(void)
{
char a_data = "Hello, this is example";
char *pa_stack[] = {a_data};
printf("We have: %s\n", *pa_stack);
}