Tag: 指针

L值与C中的R值

我正在回答这本教科书中的教科书问题。 我正在学习C中的指针,并且遇到了l值和r值。 根据我的理解: l-values are values that are defined after they are executed (++x) r-values are values that are not defined after they are executed (x++) 这是正确的吗? 我想回答的问题(我的尝试): a) Which of the following C expressions are L-Values? 1. x + 2 Not a L value 2. &x Is a L value 3. *&x Is a […]

双指针和指针数组之间的区别

在普通的c / c ++程序中,我们将main函数编写为 int main(int c, char **argv) 要么 int main(int c, char *argv[]) 这里argv表示一个指针数组,但我们甚至用**表示双指针(指针指针)。 例如: char p,*q,**r; q=&p; r=&q; 这里r是双指针而不是指针数组。 任何人都可以解释这个区别吗?

这些声明在C中有什么区别?

在C和C ++中,以下声明有什么作用? const int * i; int * const i; const volatile int ip; const int *i; 上述任何声明是否有误? 如果没有,它们之间的含义和区别是什么? 上述声明有什么用处(我的意思是我们必须在C / C ++ / embedded C中使用它们)?

取消引用无效指针

即使在转换了一个void指针之后,我在解除引用时也遇到了编译错误。 有谁能请让我知道这个的原因。 int lVNum = 2; void *lVptr; lVptr = (int*)&lVNum; printf(“\nlVptr[60 ] is %d \n”,lVptr[1]);

获取数组变量的地址意味着什么?

今天我读了一个让我感到困惑的C片段: #include int main(void) { int a[] = {0, 1, 2, 3}; printf(“%d\n”, *(*(&a + 1) – 1)); return 0; } 在我看来, &a + 1毫无意义,但它运行没有错误。 有人可以解释一下这意味着什么,谢谢。 K&R C圣经是否涵盖了这一点? UPDATE0:读完答案后,我意识到这两个表达式主要让我困惑: &a + 1 ,已在SO中询问: 关于c中的表达“&anArray” *(&a + 1) -1 ,与数组衰减有关。

请解释一下差异

我有一个关于二维数组的程序 基地址是8678 #include #include main() { int arr[3][3]={ {83,8,43}, {73,45,6}, {34,67,9} }; printf(“%d “,&arr+1); //points to 8696 printf(“%d “,arr+1); //points to 8684 return 0; } arr+1和&arr+1什么区别?

使用三重指针将内存分配给3D数组

我必须使用三指针将内存分配给3D数组。 #include int main() { int m=10,n=20,p=30; char ***z; z = (char***) malloc(sizeof(char**)*m*n*p); return 0; } 这是正确的做法吗?(我认为我所做的是不正确的。)

如何在C ++中初始化指向特定内存地址的指针

可能重复: 指向特定固定地址的指针 关于这一点的有趣讨论从这里开始,但没有人能够提供C ++的方式: #include int main(void) { int* address = (int *)0x604769; printf(“Memory address is: 0x%p\n”, address); *address = 0xdead; printf(“Content of the address is: 0x%p\n”, *address); return 0; } 在C ++中最合适的方法是什么?

如何回答关于常量指针的面试测试?

我接受了一次采访,他们问我这个问题 #include int main () { int* const p=NULL; int const *q=NULL; p++; q++; printf(“%d\n”,p); printf(“%d\n”,q); } 以上程序将如何表现 a)p将增加4个字节; 和q也将增加4个字节; b)p将为零 q将指向前面4个字节的内存; c)错误将出现在上述程序中 我无法理解这些陈述之间的区别 int* const p=NULL; int const *q=NULL;

fopen()返回一个NULL指针,但该文件肯定存在

我的代码如下: FILE *txt_file = fopen(“data.txt”, “r”); if (txt_file == NULL) { perror(“Can’t open file”); } 返回的错误消息是: 无法打开文件:没有这样的文件或目录 文件’data.txt’肯定存在于工作目录中(它存在于包含我的.c和.h文件的目录中),那么为什么fopen()返回一个NULL指针?