Tag: 指针

点(“。”)运算符和箭头(“ – >”)运算符在C和Objective-C中使用

我试图围绕C和Objective-C中的一些使用和语法差异来解决问题。 特别是,我想知道在C和Objective-C中点运算符和箭头运算符的使用方式(以及为什么)有所不同。 这是一个简单的例子。 C代码: // declare a pointer to a Fraction struct Fraction *frac; … // reference an 'instance' variable int n = (*frac).numerator; // these two expressions int n = frac->numerator; // are equivalent Objective-C代码: // declare a pointer to a Fraction Fraction *frac = [[Fraction alloc] init]; … // reference an instance variable […]

指针和参考参数之间的区别?

这些是一样的: int foo(bar* p) { return p->someInt(); } 和 int foo(bar& r) { return r.someInt(); } 忽略空指针的潜力。 无论someInt()是虚拟的还是通过一个bar或bar的子类,这两个函数在function上是否相同? 这是否切片什么: bar& ref = *ptr_to_bar;

我应该明确地施放malloc()的返回值吗?

我想问一下下面的情况: char *temp; temp = malloc(10); 由于malloc的返回types是void* , malloc返回的指针是否会在被分配给temp之前被隐式转换为char*types? 标准在这方面说了什么? 如果我们的指针variables是一些结构types,例如: struct node *temp; temp = (struct node *)malloc(sizeof(struct node)); 如果我们将内存分配给temp而不将其转换为struct node*types,是否将其隐式转换为struct node*types,还是需要将其显式转换为struct node* type?

为什么string可以分配给char *指针,而不是char 数组?

有人可以解释为什么这与指针工作: char * str1; str1 = "Hello1"; str1 = "new string"; // but not this char str2 [] = "hello"; str2 = "four"; // or this char str3 []; str3 = "hello"; str3 = "hello";

我的字符指针指向无效的值后从int *

我正在学习C编程语言,我刚开始学习数组指针 。 我在这个问题上有问题,我希望那个输出必须是5但是是2 ,谁能解释一下为什么? int main(){ int arr[] = {1, 2, 3, 4, 5}; char *ptr = (char *) arr; printf("%d", *(ptr+4)); return 0; }

何时访问指向“死”对象的指针有效?

首先,为了澄清,我不是在引用无效指针的引用! 考虑以下两个例子。 例1 typedef struct { int *p; } T; T a = { malloc(sizeof(int) }; free(ap); // ap is now indeterminate? T b = a; // Access through a non-character type? 例2 void foo(int *p) {} int *p = malloc(sizeof(int)); free(p); // p is now indeterminate? foo(p); // Access through a non-character type? 题 […]

检查一个指针是否被分配了内存

我们可以检查传递给一个函数的指针是否被分配了内存或不在C中? 我有自己的C函数,它接受一个字符指针 – buf [指向缓冲区的指针]和size – buf_siz [buffer size]。 实际上,在调用这个函数之前,用户必须创build一个缓冲区并为其分配buf_siz的内存。 由于用户有可能忘记进行内存分配,只需将指针传递给我的函数,我想检查一下。 那么有没有什么办法可以检查我的函数来查看指针是否真的被分配了buf_siz的内存量。 编辑1:似乎没有标准库检查它..但有没有任何肮脏的黑客检查它..? 编辑2:我知道我的function将被一个好的C程序员使用…但我想知道我们是否可以检查或不..如果我们可以,我想听听它.. 结论:所以不可能检查一个特定的指针是否在内存中分配或者不在一个函数中

错误:types'int'的非常量引用的types'int'的右值的无效初始化

错误的forms: int &z = 12; 正确forms: int y; int &r = y; 问题 : 为什么第一个代码是错的? 标题中错误的“ 含义 ”是什么?

C中str == NULL和str =='\ 0'有什么区别?

我想知道str == NULL和str[0] == '\0'之间的区别: int convert_to_float(char *str, double *num) { if ((str == NULL) || (str[0] == '\0')) return(-1); *num = strtod(str, (char **)NULL); return(0); } 我在Linux上使用gcc。

只写指针types

我正在为embedded式系统编写软件。 我们使用指针访问FPGA器件的寄存器。 一些寄存器是只读的,而另一些是只写的。 只读寄存器在读取时会产生未定义的值。 我想定义一个指针types,它允许编译器检测何时从只写寄存器(又名解引用)读取值。 只能使用C语言语法创build只写指针吗? (我们正在开发使用C的第一个原型,但在第二代移植到C ++。) 如何在C ++中创build高效的只写指针? (请记住,这不是跟踪dynamic内存中的项目,而是访问硬件地址。) 该代码用于安全性和质量最为关注的embedded式系统中。