Вы могли бы хотеть читать на различных способах, которыми параметры могут (концептуально) быть переданы функциям. C вызов по значению , поэтому при передаче указателя на реагирование в функцию, Вы передаете копию указателя. Любые изменения, которые функция вносит в значение r непосредственно (весьма непосредственно) не будут видимы вызывающей стороне.
, Если Вы хотите, чтобы функция предоставила вызывающей стороне новую структуру тогда, существует два способа сделать ее: 1. можно возвратить реагирование: 2. можно передать указатель на указатель на реагирование в:
первый путь был бы более естественным:
struct rect* canonRect(struct rect* r)
{
struct rect* cr = (struct rect*) malloc(sizeof(struct rect));
...
return cr;
}
второй путь был бы:
void canonRect(struct rect** r)
{
*r = (struct rect*) malloc(sizeof(struct rect));
}
и вызывающая сторона тогда использовал бы:
canonRect(&r);
, Но вызывающая сторона теряет исходный указатель, который это имело, и необходимо будет бояться пропускать структуры.
, Какой бы ни техника Вы используете, функция должна будет выделить память для новой структуры на "куче" с помощью malloc. Вы не можете выделить место на стеке, просто объявив структуру, потому что та память становится недопустимой, когда функция возвращается.
Вы! С win32com это - работы для меня.
import win32com.client
Excel = win32com.client.Dispatch("Excel.Application")
# python -m pip install pywin32
file=r'path Excel file'
wb = Excel.Workbooks.Open(file)
sheet = wb.ActiveSheet
#Get value
val = sheet.Cells(1,1).value
# Get Formula
sheet.Cells(6,2).Formula